comparison src/event/modules/ngx_devpoll_module.c @ 381:02a511569afb

nginx-0.0.7-2004-07-07-19:01:00 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 07 Jul 2004 15:01:00 +0000
parents 5ce6561246a5
children 537de4dca8ca
comparison
equal deleted inserted replaced
380:5ce6561246a5 381:02a511569afb
320 ngx_uint_t j, lock, accept_lock, expire; 320 ngx_uint_t j, lock, accept_lock, expire;
321 size_t n; 321 size_t n;
322 ngx_msec_t timer; 322 ngx_msec_t timer;
323 ngx_err_t err; 323 ngx_err_t err;
324 ngx_cycle_t **old_cycle; 324 ngx_cycle_t **old_cycle;
325 ngx_event_t *rev, *wev;
325 ngx_connection_t *c; 326 ngx_connection_t *c;
326 ngx_epoch_msec_t delta; 327 ngx_epoch_msec_t delta;
327 struct dvpoll dvp; 328 struct dvpoll dvp;
328 struct timeval tv; 329 struct timeval tv;
329 330
474 "fd:%d ev:%04X rev:%04X", 475 "fd:%d ev:%04X rev:%04X",
475 event_list[i].fd, 476 event_list[i].fd,
476 event_list[i].events, event_list[i].revents); 477 event_list[i].events, event_list[i].revents);
477 } 478 }
478 479
479 if ((event_list[i].events & (POLLOUT|POLLERR|POLLHUP)) 480 wev = c->write;
480 && c->write->active) 481
481 { 482 if ((event_list[i].events & (POLLOUT|POLLERR|POLLHUP)) && wev->active) {
482 c->write->ready = 1; 483 wev->ready = 1;
483 484
484 if (!ngx_threaded && !ngx_accept_mutex_held) { 485 if (!ngx_threaded && !ngx_accept_mutex_held) {
485 c->write->event_handler(c->write); 486 wev->event_handler(wev);
486 487
487 } else { 488 } else {
488 ngx_post_event(c->write); 489 ngx_post_event(wev);
489 } 490 }
490 } 491 }
491 492
492 /* 493 /*
493 * POLLIN must be handled after POLLOUT because we use 494 * POLLIN must be handled after POLLOUT because we use
494 * the optimization to avoid the unnecessary mutex locking/unlocking 495 * the optimization to avoid the unnecessary mutex locking/unlocking
495 * if the accept event is the last one. 496 * if the accept event is the last one.
496 */ 497 */
497 498
498 if ((event_list[i].events & (POLLIN|POLLERR|POLLHUP)) 499 rev = c->read;
499 && c->read->active) 500
500 { 501 if ((event_list[i].events & (POLLIN|POLLERR|POLLHUP)) && rev->active) {
501 c->read->ready = 1; 502 rev->ready = 1;
502 503
503 if (!ngx_threaded && !ngx_accept_mutex_held) { 504 if (!ngx_threaded && !ngx_accept_mutex_held) {
504 c->read->event_handler(c->read); 505 rev->event_handler(rev);
505 506
506 } else if (!c->read->accept) { 507 } else if (!rev->accept) {
507 ngx_post_event(c->read); 508 ngx_post_event(rev);
508 509
509 } else if (ngx_accept_disabled <= 0) { 510 } else if (ngx_accept_disabled <= 0) {
510 ngx_mutex_unlock(ngx_posted_events_mutex); 511 ngx_mutex_unlock(ngx_posted_events_mutex);
511 512
512 c->read->event_handler(c->read); 513 c->read->event_handler(rev);
513 514
514 if (ngx_accept_disabled > 0) { 515 if (ngx_accept_disabled > 0) {
515 ngx_accept_mutex_unlock(); 516 ngx_accept_mutex_unlock();
516 accept_lock = 0; 517 accept_lock = 0;
517 } 518 }