Mercurial > hg > nginx
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 } |