diff options
author | Igor Sysoev <igor@sysoev.ru> | 2004-04-14 20:34:05 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2004-04-14 20:34:05 +0000 |
commit | cccc5528945be46d6afb456e7aba751340af9089 (patch) | |
tree | b734bef5df932252d9f04ddaf39ef80c83b0b0f2 /src/event/modules/ngx_select_module.c | |
parent | b3968b314f063c42f983ba70becfb9fae97651f0 (diff) | |
download | nginx-cccc5528945be46d6afb456e7aba751340af9089.tar.gz nginx-cccc5528945be46d6afb456e7aba751340af9089.zip |
nginx-0.0.3-2004-04-15-00:34:05 import
Diffstat (limited to 'src/event/modules/ngx_select_module.c')
-rw-r--r-- | src/event/modules/ngx_select_module.c | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c index 0f3848d4e..91563f275 100644 --- a/src/event/modules/ngx_select_module.c +++ b/src/event/modules/ngx_select_module.c @@ -263,7 +263,19 @@ static int ngx_select_process_events(ngx_cycle_t *cycle) static ngx_epoch_msec_t deltas = 0; #endif - timer = ngx_event_find_timer(); + for ( ;; ) { + timer = ngx_event_find_timer(); + + if (timer != 0) { + break; + } + + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "select expired timer"); + + ngx_event_expire_timers(0); + } + ngx_old_elapsed_msec = ngx_elapsed_msec; expire = 1; @@ -276,7 +288,7 @@ static int ngx_select_process_events(ngx_cycle_t *cycle) } if (ngx_accept_mutex_held == 0 - && (timer == 0 || timer > ngx_accept_mutex_delay)) + && (timer == NGX_TIMER_INFINITE || timer > ngx_accept_mutex_delay)) { timer = ngx_accept_mutex_delay; expire = 0; @@ -306,19 +318,14 @@ static int ngx_select_process_events(ngx_cycle_t *cycle) } #endif - if (timer == -1) { - tv.tv_sec = 0; - tv.tv_usec = 0; - tp = &tv; + if (timer == NGX_TIMER_INFINITE) { + tp = NULL; + expire = 0; - } else if (timer) { + } else { tv.tv_sec = timer / 1000; tv.tv_usec = (timer % 1000) * 1000; tp = &tv; - - } else { - tp = NULL; - expire = 0; } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, @@ -344,7 +351,7 @@ static int ngx_select_process_events(ngx_cycle_t *cycle) #if (HAVE_SELECT_CHANGE_TIMEOUT) - if (timer) { + if (timer != NGX_TIMER_INFINITE) { delta = timer - (tv.tv_sec * 1000 + tv.tv_usec / 1000); /* @@ -383,7 +390,7 @@ static int ngx_select_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) { + if (timer != NGX_TIMER_INFINITE) { delta = ngx_elapsed_msec - delta; ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |