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
index 243febd..f900a28 100644
--- a/src/core/ngx_cycle.c
+++ b/src/core/ngx_cycle.c
@@ -54,11 +54,8 @@
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 @@
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 3006a07..b11320d 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 @@
#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)
{