diff options
Diffstat (limited to 'src/event/ngx_event_timer.c')
-rw-r--r-- | src/event/ngx_event_timer.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index 416cb13f0..72f2cd2bd 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -21,9 +21,9 @@ int ngx_event_timer_init(ngx_cycle_t *cycle) } ngx_event_timer_rbtree = &ngx_event_timer_sentinel; - ngx_event_timer_sentinel.left = &ngx_event_timer_sentinel; #if 0 + ngx_event_timer_sentinel.left = &ngx_event_timer_sentinel; ngx_event_timer_sentinel.right = &ngx_event_timer_sentinel; ngx_event_timer_sentinel.parent = &ngx_event_timer_sentinel; #endif @@ -41,19 +41,18 @@ ngx_msec_t ngx_event_find_timer(void) { ngx_rbtree_t *node; - node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel); - - if (node == &ngx_event_timer_sentinel) { + if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { return 0; + } + + node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel); - } else { - return (ngx_msec_t) + return (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 - } } @@ -63,13 +62,14 @@ void ngx_event_expire_timers(ngx_msec_t timer) ngx_rbtree_t *node; for ( ;; ) { - node = ngx_rbtree_min(ngx_event_timer_rbtree, - &ngx_event_timer_sentinel); - if (node == &ngx_event_timer_sentinel) { + if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { break; } + node = ngx_rbtree_min(ngx_event_timer_rbtree, + &ngx_event_timer_sentinel); + if ((ngx_msec_t) node->key <= (ngx_msec_t) (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) { |