Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-06-15 22:32:13 +0400
committerIgor Sysoev <igor@sysoev.ru>2003-06-15 22:32:13 +0400
commitbe2cfc3d28c90b0e911f22d6f14ce927b7f5bfad (patch)
tree52bcfd54a3779fd021278e28dffad5d5bd2f2f4a /src/event/ngx_event_timer.c
parent0915977df53c486abbc6081e1c83f9f8e7a8f111 (diff)
nginx-0.0.1-2003-06-15-22:32:13 import
Diffstat (limited to 'src/event/ngx_event_timer.c')
-rw-r--r--src/event/ngx_event_timer.c30
1 files changed, 22 insertions, 8 deletions
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;
}