From be2cfc3d28c90b0e911f22d6f14ce927b7f5bfad Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Sun, 15 Jun 2003 18:32:13 +0000 Subject: nginx-0.0.1-2003-06-15-22:32:13 import --- src/event/ngx_event_timer.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/event/ngx_event_timer.c') diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index 081afdb25..a49cc9260 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -12,20 +12,33 @@ static int ngx_timer_queue_num; int ngx_event_timer_init(ngx_log_t *log) { int i; + ngx_event_t *new_queue; ngx_event_conf_t *ecf; ecf = ngx_event_get_conf(ngx_event_module); - ngx_timer_queue_num = ecf->timer_queues; - ngx_timer_cur_queue = 0; + if (ngx_timer_queue_num < ecf->timer_queues) { + ngx_test_null(new_queue, + ngx_alloc(ecf->timer_queues * sizeof(ngx_event_t), log), + NGX_ERROR); - ngx_test_null(ngx_timer_queue, - ngx_alloc(ngx_timer_queue_num * sizeof(ngx_event_t), log), - NGX_ERROR); + for (i = 0; i < ngx_timer_queue_num; i++) { + new_queue[i] = ngx_timer_queue[i]; + } - for (i = 0; i < ngx_timer_queue_num; i++) { - ngx_timer_queue[i].timer_prev = &ngx_timer_queue[i]; - ngx_timer_queue[i].timer_next = &ngx_timer_queue[i]; + if (ngx_timer_queue) { + ngx_free(ngx_timer_queue); + } + + ngx_timer_queue = new_queue; + + ngx_timer_queue_num = ecf->timer_queues; + ngx_timer_cur_queue = 0; + + for (/* void */; i < ngx_timer_queue_num; i++) { + ngx_timer_queue[i].timer_prev = &ngx_timer_queue[i]; + ngx_timer_queue[i].timer_next = &ngx_timer_queue[i]; + } } return NGX_OK;; @@ -35,6 +48,7 @@ int ngx_event_timer_init(ngx_log_t *log) void ngx_event_timer_done(ngx_log_t *log) { ngx_free(ngx_timer_queue); + ngx_timer_queue = NULL; } -- cgit v1.2.3