comparison src/event/modules/ngx_epoll_module.c @ 622:8dc007eddbcf NGINX_1_0_1

nginx 1.0.1 *) Change: now the "split_clients" directive uses MurmurHash2 algorithm because of better distribution. Thanks to Oleg Mamontov. *) Change: now long strings starting with zero are not considered as false values. Thanks to Maxim Dounin. *) Change: now nginx uses a default listen backlog value 511 on Linux. *) Feature: the $upstream_... variables may be used in the SSI and perl modules. *) Bugfix: now nginx limits better disk cache size. Thanks to Oleg Mamontov. *) Bugfix: a segmentation fault might occur while parsing incorrect IPv4 address; the bug had appeared in 0.9.3. Thanks to Maxim Dounin. *) Bugfix: nginx could not be built by gcc 4.6 without --with-debug option. *) Bugfix: nginx could not be built on Solaris 9 and earlier; the bug had appeared in 0.9.3. Thanks to Dagobert Michelsen. *) Bugfix: $request_time variable had invalid values if subrequests were used; the bug had appeared in 0.8.47. Thanks to Igor A. Valcov.
author Igor Sysoev <http://sysoev.ru>
date Tue, 03 May 2011 00:00:00 +0400
parents be4f34123024
children eb208e0cf44d
comparison
equal deleted inserted replaced
621:00d13b6d4ebd 622:8dc007eddbcf
516 int events; 516 int events;
517 uint32_t revents; 517 uint32_t revents;
518 ngx_int_t instance, i; 518 ngx_int_t instance, i;
519 ngx_uint_t level; 519 ngx_uint_t level;
520 ngx_err_t err; 520 ngx_err_t err;
521 ngx_log_t *log;
522 ngx_event_t *rev, *wev, **queue; 521 ngx_event_t *rev, *wev, **queue;
523 ngx_connection_t *c; 522 ngx_connection_t *c;
524 523
525 /* NGX_TIMER_INFINITE == INFTIM */ 524 /* NGX_TIMER_INFINITE == INFTIM */
526 525
563 return NGX_ERROR; 562 return NGX_ERROR;
564 } 563 }
565 564
566 ngx_mutex_lock(ngx_posted_events_mutex); 565 ngx_mutex_lock(ngx_posted_events_mutex);
567 566
568 log = cycle->log;
569
570 for (i = 0; i < events; i++) { 567 for (i = 0; i < events; i++) {
571 c = event_list[i].data.ptr; 568 c = event_list[i].data.ptr;
572 569
573 instance = (uintptr_t) c & 1; 570 instance = (uintptr_t) c & 1;
574 c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1); 571 c = (ngx_connection_t *) ((uintptr_t) c & (uintptr_t) ~1);
585 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, 582 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
586 "epoll: stale event %p", c); 583 "epoll: stale event %p", c);
587 continue; 584 continue;
588 } 585 }
589 586
590 #if (NGX_DEBUG0)
591 log = c->log ? c->log : cycle->log;
592 #endif
593
594 revents = event_list[i].events; 587 revents = event_list[i].events;
595 588
596 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, log, 0, 589 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
597 "epoll: fd:%d ev:%04XD d:%p", 590 "epoll: fd:%d ev:%04XD d:%p",
598 c->fd, revents, event_list[i].data.ptr); 591 c->fd, revents, event_list[i].data.ptr);
599 592
600 if (revents & (EPOLLERR|EPOLLHUP)) { 593 if (revents & (EPOLLERR|EPOLLHUP)) {
601 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, log, 0, 594 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
602 "epoll_wait() error on fd:%d ev:%04XD", 595 "epoll_wait() error on fd:%d ev:%04XD",
603 c->fd, revents); 596 c->fd, revents);
604 } 597 }
605 598
606 #if 0 599 #if 0
607 if (revents & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) { 600 if (revents & ~(EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP)) {
608 ngx_log_error(NGX_LOG_ALERT, log, 0, 601 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
609 "strange epoll_wait() events fd:%d ev:%04XD", 602 "strange epoll_wait() events fd:%d ev:%04XD",
610 c->fd, revents); 603 c->fd, revents);
611 } 604 }
612 #endif 605 #endif
613 606