diff src/event/ngx_event_timer.c @ 557:ecd9c160f25b release-0.3.0

nginx-0.3.0-RELEASE import *) Change: the 10-days live time limit of worker process was eliminated. The limit was introduced because of millisecond timers overflow.
author Igor Sysoev <igor@sysoev.ru>
date Fri, 07 Oct 2005 13:30:52 +0000
parents 563ad09abf50
children c1f965ef9718
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,