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];