From ed3c703f4a1529e95300ecaf12ee7bf705e8b6e3 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Wed, 18 Apr 2007 11:28:11 +0000 Subject: [PATCH] fix segfault when *) perl was built without multiplicity *) when configuration was invalid --- src/core/ngx_cycle.c | 13 +++++++++---- src/http/modules/perl/ngx_http_perl_module.c | 5 +++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c index 243febd0e..f900a2824 100644 --- 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; diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c index 3006a070c..b11320dad 100644 --- 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_t *cf, ngx_http_perl_main_conf_t *pmcf) #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) {