# HG changeset patch # User Igor Sysoev # Date 1176895691 0 # Node ID efb7d84db340c0e5ac474430479d5dfdf91234a8 # Parent d201e0461c3ca34cc225b165cef166392c2e6353 fix segfault when *) perl was built without multiplicity *) when configuration was invalid diff --git a/src/core/ngx_cycle.c b/src/core/ngx_cycle.c --- 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 --- 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) {