aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_epoll_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/modules/ngx_epoll_module.c')
-rw-r--r--src/event/modules/ngx_epoll_module.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/event/modules/ngx_epoll_module.c b/src/event/modules/ngx_epoll_module.c
index cad7ed9b7..f5bd6e5ba 100644
--- a/src/event/modules/ngx_epoll_module.c
+++ b/src/event/modules/ngx_epoll_module.c
@@ -353,28 +353,37 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
ngx_connection_t *c;
ngx_epoch_msec_t delta;
- timer = ngx_event_find_timer();
- ngx_old_elapsed_msec = ngx_elapsed_msec;
+ for ( ;; ) {
+ timer = ngx_event_find_timer();
- if (timer == -1) {
- timer = 0;
- expire = 1;
+ if (timer != 0) {
+ break;
+ }
- } else if (timer == 0) {
- timer = (ngx_msec_t) -1;
+ ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "epoll expired timer");
+
+ ngx_event_expire_timers(0);
+ }
+
+ /* NGX_TIMER_INFINITE == INFTIM */
+
+ if (timer == NGX_TIMER_INFINITE) {
expire = 0;
} else {
expire = 1;
}
+ ngx_old_elapsed_msec = ngx_elapsed_msec;
+
if (ngx_accept_mutex) {
if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) {
return NGX_ERROR;
}
if (ngx_accept_mutex_held == 0
- && (timer == -1 || timer > ngx_accept_mutex_delay))
+ && (timer == NGX_TIMER_INFINITE || timer > ngx_accept_mutex_delay))
{
timer = ngx_accept_mutex_delay;
expire = 0;
@@ -398,7 +407,7 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
delta = ngx_elapsed_msec;
ngx_elapsed_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000 - ngx_start_msec;
- if (timer != (ngx_msec_t) -1) {
+ if (timer != NGX_TIMER_INFINITE) {
delta = ngx_elapsed_msec - delta;
ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,