diff options
author | Igor Sysoev <igor@sysoev.ru> | 2005-10-07 13:30:52 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2005-10-07 13:30:52 +0000 |
commit | 208eed22101e987a370036fa3851ce81c088c599 (patch) | |
tree | 40f2aa55bb0415eef08415373d380577eb18561f /src/event/modules/ngx_iocp_module.c | |
parent | 12b7a12a2d2cbf4a98a23c2d6c0c06ff588d2d70 (diff) | |
download | nginx-release-0.3.0.tar.gz nginx-release-0.3.0.zip |
nginx-0.3.0-RELEASE importrelease-0.3.0
*) Change: the 10-days live time limit of worker process was
eliminated. The limit was introduced because of millisecond timers
overflow.
Diffstat (limited to 'src/event/modules/ngx_iocp_module.c')
-rw-r--r-- | src/event/modules/ngx_iocp_module.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/src/event/modules/ngx_iocp_module.c b/src/event/modules/ngx_iocp_module.c index 5c9e7e68f..269d95552 100644 --- a/src/event/modules/ngx_iocp_module.c +++ b/src/event/modules/ngx_iocp_module.c @@ -184,23 +184,21 @@ ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle) u_int key; u_long bytes; ngx_err_t err; - ngx_msec_t timer; + ngx_msec_t timer, delta; ngx_event_t *ev; struct timeval tv; - ngx_epoch_msec_t delta; ngx_event_ovlp_t *ovlp; timer = ngx_event_find_timer(); - ngx_old_elapsed_msec = ngx_elapsed_msec; - if (timer == 0) { + if (timer == NGX_TIMER_INFINITE) { timer = INFINITE; } - ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "iocp timer: %d", timer); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "iocp timer: %M", timer); rc = GetQueuedCompletionStatus(iocp, &bytes, (LPDWORD) &key, - (LPOVERLAPPED *) &ovlp, timer); + (LPOVERLAPPED *) &ovlp, (u_long) timer); if (rc == 0) { err = ngx_errno; @@ -214,15 +212,14 @@ ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle) ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "iocp: %d b:%d k:%d ov:%p", rc, bytes, key, ovlp); - delta = ngx_elapsed_msec; - ngx_elapsed_msec = (ngx_epoch_msec_t) tv.tv_sec * 1000 - + tv.tv_usec / 1000 - ngx_start_msec; + delta = ngx_current_time; + ngx_current_time = (ngx_msec_t) tv.tv_sec * 1000 + tv.tv_usec / 1000; if (timer != INFINITE) { - delta = ngx_elapsed_msec - delta; + delta = ngx_current_time - delta; ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, - "iocp timer: %d, delta: %d", timer, (int) delta); + "iocp timer: %M, delta: %M", timer, delta); } if (err) { @@ -234,9 +231,7 @@ ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle) return NGX_ERROR; } - if (timer != INFINITE && delta) { - ngx_event_expire_timers((ngx_msec_t) delta); - } + ngx_event_expire_timers(); return NGX_OK; } @@ -268,9 +263,7 @@ ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle) ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, err, "iocp: aborted event %p", ev); - if (timer != INFINITE && delta) { - ngx_event_expire_timers((ngx_msec_t) delta); - } + ngx_event_expire_timers(); return NGX_OK; } @@ -304,9 +297,7 @@ ngx_int_t ngx_iocp_process_events(ngx_cycle_t *cycle) ev->handler(ev); - if (timer != INFINITE && delta) { - ngx_event_expire_timers((ngx_msec_t) delta); - } + ngx_event_expire_timers(); return NGX_OK; } |