changeset 1165:efb7d84db340

fix segfault when *) perl was built without multiplicity *) when configuration was invalid
author Igor Sysoev <igor@sysoev.ru>
date Wed, 18 Apr 2007 11:28:11 +0000
parents d201e0461c3c
children bde5e4134759
files src/core/ngx_cycle.c src/http/modules/perl/ngx_http_perl_module.c
diffstat 2 files changed, 14 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -54,11 +54,8 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
     ngx_list_part_t    *part, *opart;
     ngx_open_file_t    *file;
     ngx_listening_t    *ls, *nls;
-    ngx_core_conf_t    *ccf;
+    ngx_core_conf_t    *ccf, *old_ccf;
     ngx_core_module_t  *module;
-#if !(WIN32)
-    ngx_core_conf_t    *old_ccf;
-#endif
 
     log = old_cycle->log;
 
@@ -747,6 +744,14 @@ old_shm_zone_done:
 
 failed:
 
+    if (!ngx_is_init_cycle(old_cycle)) {
+        old_ccf = (ngx_core_conf_t *) ngx_get_conf(old_cycle->conf_ctx,
+                                                   ngx_core_module);
+        if (old_ccf->environment) {
+            environ = old_ccf->environment;
+        }
+    }
+
     /* rollback the new cycle configuration */
 
     part = &cycle->open_files.part;
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -459,6 +459,11 @@ ngx_http_perl_init_interpreter(ngx_conf_
 #if !(NGX_HAVE_PERL_MULTIPLICITY)
 
     if (perl) {
+
+        if (ngx_set_environment(cf->cycle, NULL) == NULL) {
+            return NGX_CONF_ERROR;
+        }
+
         if (ngx_http_perl_run_requires(aTHX_ &pmcf->requires, cf->log)
             != NGX_OK)
         {