diff src/core/ngx_cycle.c @ 142:84910468f6de NGINX_0_3_18

nginx 0.3.18 *) Feature: the "server_names" directive supports the ".domain.tld" names. *) Feature: the "server_names" directive uses the hash for the "*.domain.tld" names and more effective hash for usual names. *) Change: the "server_names_hash_max_size" and "server_names_hash_bucket_size" directives. *) Change: the "server_names_hash" and "server_names_hash_threshold" directives were canceled. *) Feature: the "valid_referers" directive uses the hash site names. *) Change: now the "valid_referers" directive checks the site names only without the URI part. *) Bugfix: some ".domain.tld" names incorrectly processed by the ngx_http_map_module. *) Bugfix: segmentation fault was occurred if configuration file did not exist; bug appeared in 0.3.12. *) Bugfix: on 64-bit platforms segmentation fault may occurred on start; bug appeared in 0.3.16.
author Igor Sysoev <http://sysoev.ru>
date Mon, 26 Dec 2005 00:00:00 +0300
parents df17fbafec8f
children bb61aa162c6b
line wrap: on
line diff
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -162,6 +162,12 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
         return NULL;
     }
 
+    conf.temp_pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);
+    if (conf.temp_pool == NULL) {
+        ngx_destroy_pool(pool);
+        return NULL;
+    }
+
     conf.ctx = cycle->conf_ctx;
     conf.cycle = cycle;
     conf.pool = pool;
@@ -174,6 +180,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
 #endif
 
     if (ngx_conf_parse(&conf, &cycle->conf_file) != NGX_CONF_OK) {
+        ngx_destroy_pool(conf.temp_pool);
         ngx_destroy_pool(pool);
         return NULL;
     }
@@ -194,8 +201,9 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
 
         if (module->init_conf) {
             if (module->init_conf(cycle, cycle->conf_ctx[ngx_modules[i]->index])
-                                                              == NGX_CONF_ERROR)
+                == NGX_CONF_ERROR)
             {
+                ngx_destroy_pool(conf.temp_pool);
                 ngx_destroy_pool(pool);
                 return NULL;
             }
@@ -421,6 +429,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
         }
 
         if (ngx_test_config) {
+            ngx_destroy_pool(conf.temp_pool);
             ngx_destroy_pool(pool);
             return NULL;
         }
@@ -438,6 +447,7 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
             }
         }
 
+        ngx_destroy_pool(conf.temp_pool);
         ngx_destroy_pool(pool);
         return NULL;
     }
@@ -521,6 +531,8 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
         }
     }
 
+    ngx_destroy_pool(conf.temp_pool);
+
     if (old_cycle->connections == NULL) {
         /* an old cycle is an init cycle */
         ngx_destroy_pool(old_cycle->pool);