diff options
Diffstat (limited to 'src/event/ngx_event_timer.c')
-rw-r--r-- | src/event/ngx_event_timer.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index db97d01fc..90a4f2099 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -5,14 +5,15 @@ ngx_rbtree_t *ngx_event_timer_rbtree; +ngx_rbtree_t ngx_event_timer_sentinel; int ngx_event_timer_init(ngx_cycle_t *cycle) { - ngx_event_timer_rbtree = &sentinel; - sentinel.left = &sentinel; - sentinel.right = &sentinel; - sentinel.parent = &sentinel; + ngx_event_timer_rbtree = &ngx_event_timer_sentinel; + 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; return NGX_OK; } @@ -27,9 +28,9 @@ ngx_msec_t ngx_event_find_timer(void) { ngx_rbtree_t *node; - node = ngx_rbtree_min(ngx_event_timer_rbtree); + node = ngx_rbtree_min(ngx_event_timer_rbtree, &ngx_event_timer_sentinel); - if (node == &sentinel) { + if (node == &ngx_event_timer_sentinel) { return 0; } else { @@ -45,14 +46,15 @@ void ngx_event_expire_timers(ngx_msec_t timer) ngx_rbtree_t *node; for ( ;; ) { - node = ngx_rbtree_min(ngx_event_timer_rbtree); + node = ngx_rbtree_min(ngx_event_timer_rbtree, + &ngx_event_timer_sentinel); - if (node == &sentinel) { + if (node == &ngx_event_timer_sentinel) { break; } if ((ngx_msec_t) node->key <= (ngx_msec_t) - (ngx_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) + (ngx_old_elapsed_msec + timer) / NGX_TIMER_RESOLUTION) { ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, rbtree_key)); |