Mercurial > hg > nginx
diff src/event/ngx_event_timer.c @ 144:ef8c87afcfc5
nginx-0.0.1-2003-10-12-20:49:16 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 12 Oct 2003 16:49:16 +0000 |
parents | cd54bcbaf3b5 |
children | e92c2c647c57 |
line wrap: on
line diff
--- a/src/event/ngx_event_timer.c Fri Oct 10 15:10:50 2003 +0000 +++ b/src/event/ngx_event_timer.c Sun Oct 12 16:49:16 2003 +0000 @@ -4,7 +4,7 @@ #include <ngx_event.h> -/* in multithreaded enviroment all timer operations must be +/* TODO: in multithreaded enviroment all timer operations must be protected by the single mutex */ @@ -70,11 +70,18 @@ void ngx_event_add_timer(ngx_event_t *ev, ngx_msec_t timer) { ngx_event_t *e, *queue; +#if (NGX_DEBUG_EVENT) + ngx_connection_t *c; +#endif + + if (ev->timer_set) { + ngx_del_timer(ev); + } #if (NGX_DEBUG_EVENT) - ngx_connection_t *c = ev->data; - ngx_log_debug(ev->log, "set timer: %d:%d, slot: %d" _ - c->fd _ timer _ ngx_timer_cur_queue); + c = ev->data; + ngx_log_debug(ev->log, "set timer: %d:%d:%d, slot: %d" _ + c->fd _ ev->write _ timer _ ngx_timer_cur_queue); #endif if (ev->timer_next || ev->timer_prev) { @@ -107,6 +114,10 @@ e->timer_prev->timer_next = ev; e->timer_prev = ev; + + ev->timer_set = 1; + + return; } @@ -129,9 +140,9 @@ if (timer == NGX_MAX_MSEC) { return 0; - } else { - return timer; } + + return timer; } @@ -190,6 +201,10 @@ timer += ngx_temp_timer_queue.timer_next->timer_delta; ev = ngx_temp_timer_queue.timer_next; +#if (NGX_DEBUG_EVENT) + ngx_log_debug(ev->log, "process temp timer queue"); +#endif + ngx_del_timer(ev); ngx_add_timer(ev, timer); }