Mercurial > hg > nginx-vendor-0-7
diff src/event/ngx_event_timer.c @ 106:45f7329b4bd0 NGINX_0_3_0
nginx 0.3.0
*) Change: the 10-days live time limit of worker process was
eliminated. The limit was introduced because of millisecond timers
overflow.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 07 Oct 2005 00:00:00 +0400 |
parents | 991c6e4c7654 |
children | cf3d6edb3ad6 |
line wrap: on
line diff
--- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -60,28 +60,18 @@ ngx_event_find_timer(void) ngx_mutex_unlock(ngx_event_timer_mutex); - timer = (ngx_msec_t) - (node->key * NGX_TIMER_RESOLUTION - - ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION); -#if 0 - (node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec); -#endif + timer = (ngx_msec_t) node->key - ngx_current_time; return timer > 0 ? timer : 0 ; } void -ngx_event_expire_timers(ngx_msec_t timer) +ngx_event_expire_timers(void) { ngx_event_t *ev; ngx_rbtree_t *node; - if (timer < 0) { - /* avoid the endless loop if the time goes backward for some reason */ - timer = 0; - } - for ( ;; ) { if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { @@ -95,8 +85,11 @@ ngx_event_expire_timers(ngx_msec_t timer node = ngx_rbtree_min((ngx_rbtree_t *) ngx_event_timer_rbtree, &ngx_event_timer_sentinel); - if (node->key <= (ngx_msec_t) - (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) + /* node->key <= ngx_current_time */ + + if ((ngx_rbtree_key_int_t) node->key + - (ngx_rbtree_key_int_t) ngx_current_time + <= 0) { ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, rbtree_key)); @@ -120,7 +113,7 @@ ngx_event_expire_timers(ngx_msec_t timer #endif ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, - "event timer del: %d: %i", + "event timer del: %d: %M", ngx_event_ident(ev->data), ev->rbtree_key); ngx_rbtree_delete((ngx_rbtree_t **) &ngx_event_timer_rbtree,