Mercurial > hg > nginx-vendor-0-5
comparison src/event/ngx_event.c @ 236:c982febb7588 NGINX_0_4_3
nginx 0.4.3
*) Change: now the 499 error could not be redirected using an
"error_page" directive.
*) Feature: the Solaris 10 event ports support.
*) Feature: the ngx_http_browser_module.
*) Bugfix: a segmentation fault may occur while redirecting the 400
error to the proxied server using an "proxy_pass" directive.
*) Bugfix: a segmentation fault occurred if an unix domain socket was
used in an "proxy_pass" directive; bug appeared in 0.3.47.
*) Bugfix: SSI did work with memcached and nonbuffered responses.
*) Workaround: of the Sun Studio PAUSE hardware capability bug.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 26 Sep 2006 00:00:00 +0400 |
parents | fa32d59d9a15 |
children | 6ae1357b7b7c |
comparison
equal
deleted
inserted
replaced
235:f622c719b711 | 236:c982febb7588 |
---|---|
11 | 11 |
12 #define DEFAULT_CONNECTIONS 512 | 12 #define DEFAULT_CONNECTIONS 512 |
13 | 13 |
14 | 14 |
15 extern ngx_module_t ngx_kqueue_module; | 15 extern ngx_module_t ngx_kqueue_module; |
16 extern ngx_module_t ngx_eventport_module; | |
16 extern ngx_module_t ngx_devpoll_module; | 17 extern ngx_module_t ngx_devpoll_module; |
17 extern ngx_module_t ngx_epoll_module; | 18 extern ngx_module_t ngx_epoll_module; |
18 extern ngx_module_t ngx_rtsig_module; | 19 extern ngx_module_t ngx_rtsig_module; |
19 extern ngx_module_t ngx_select_module; | 20 extern ngx_module_t ngx_select_module; |
20 | 21 |
47 | 48 |
48 | 49 |
49 ngx_atomic_t *ngx_accept_mutex_ptr; | 50 ngx_atomic_t *ngx_accept_mutex_ptr; |
50 ngx_shmtx_t ngx_accept_mutex; | 51 ngx_shmtx_t ngx_accept_mutex; |
51 ngx_uint_t ngx_use_accept_mutex; | 52 ngx_uint_t ngx_use_accept_mutex; |
53 ngx_uint_t ngx_accept_events; | |
52 ngx_uint_t ngx_accept_mutex_held; | 54 ngx_uint_t ngx_accept_mutex_held; |
53 ngx_msec_t ngx_accept_mutex_delay; | 55 ngx_msec_t ngx_accept_mutex_delay; |
54 ngx_int_t ngx_accept_disabled; | 56 ngx_int_t ngx_accept_disabled; |
55 ngx_file_t ngx_accept_mutex_lock_file; | 57 ngx_file_t ngx_accept_mutex_lock_file; |
56 | 58 |
312 } | 314 } |
313 | 315 |
314 return NGX_OK; | 316 return NGX_OK; |
315 } | 317 } |
316 | 318 |
317 } else if (ngx_event_flags & NGX_USE_ONESHOT_EVENT) { | 319 } else if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) { |
318 | 320 |
319 /* event ports */ | 321 /* event ports */ |
320 | 322 |
321 if (!rev->active) { | 323 if (!rev->active && !rev->ready) { |
322 if (ngx_add_event(rev, NGX_READ_EVENT, NGX_ONESHOT_EVENT) | 324 if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) { |
323 == NGX_ERROR) | 325 return NGX_ERROR; |
324 { | 326 } |
325 return NGX_ERROR; | 327 |
326 } | 328 return NGX_OK; |
327 } | 329 } |
328 | 330 |
329 return NGX_OK; | 331 if (rev->oneshot && !rev->ready) { |
332 if (ngx_del_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) { | |
333 return NGX_ERROR; | |
334 } | |
335 | |
336 return NGX_OK; | |
337 } | |
330 } | 338 } |
331 | 339 |
332 /* aio, iocp, rtsig */ | 340 /* aio, iocp, rtsig */ |
333 | 341 |
334 return NGX_OK; | 342 return NGX_OK; |
339 ngx_handle_write_event(ngx_event_t *wev, size_t lowat) | 347 ngx_handle_write_event(ngx_event_t *wev, size_t lowat) |
340 { | 348 { |
341 ngx_connection_t *c; | 349 ngx_connection_t *c; |
342 | 350 |
343 if (lowat) { | 351 if (lowat) { |
344 c = (ngx_connection_t *) wev->data; | 352 c = wev->data; |
345 | 353 |
346 if (ngx_send_lowat(c, lowat) == NGX_ERROR) { | 354 if (ngx_send_lowat(c, lowat) == NGX_ERROR) { |
347 return NGX_ERROR; | 355 return NGX_ERROR; |
348 } | 356 } |
349 } | 357 } |
385 } | 393 } |
386 | 394 |
387 return NGX_OK; | 395 return NGX_OK; |
388 } | 396 } |
389 | 397 |
390 } else if (ngx_event_flags & NGX_USE_ONESHOT_EVENT) { | 398 } else if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) { |
391 | 399 |
392 /* event ports */ | 400 /* event ports */ |
393 | 401 |
394 if (!wev->active) { | 402 if (!wev->active && !wev->ready) { |
395 if (ngx_add_event(wev, NGX_WRITE_EVENT, NGX_ONESHOT_EVENT) | 403 if (ngx_add_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { |
396 == NGX_ERROR) | 404 return NGX_ERROR; |
397 { | 405 } |
398 return NGX_ERROR; | 406 |
399 } | 407 return NGX_OK; |
400 } | 408 } |
401 | 409 |
402 return NGX_OK; | 410 if (wev->oneshot && wev->ready) { |
411 if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { | |
412 return NGX_ERROR; | |
413 } | |
414 | |
415 return NGX_OK; | |
416 } | |
403 } | 417 } |
404 | 418 |
405 /* aio, iocp, rtsig */ | 419 /* aio, iocp, rtsig */ |
406 | 420 |
407 return NGX_OK; | 421 return NGX_OK; |
1196 for (i = 0; ngx_modules[i]; i++) { | 1210 for (i = 0; ngx_modules[i]; i++) { |
1197 if (ngx_modules[i]->type == NGX_EVENT_MODULE) { | 1211 if (ngx_modules[i]->type == NGX_EVENT_MODULE) { |
1198 event_module = ngx_modules[i]->ctx; | 1212 event_module = ngx_modules[i]->ctx; |
1199 | 1213 |
1200 if (ngx_strcmp(event_module->name->data, event_core_name.data) | 1214 if (ngx_strcmp(event_module->name->data, event_core_name.data) |
1201 == 0) | 1215 == 0) |
1202 { | 1216 { |
1203 continue; | 1217 continue; |
1204 } | 1218 } |
1205 | 1219 |
1206 module = ngx_modules[i]; | 1220 module = ngx_modules[i]; |