# HG changeset patch # User Igor Sysoev # Date 1239827193 0 # Node ID b4d8aef4a1adaa7f6f3f2daece86f253ff1eec0f # Parent 41f9934570211588d74e41c12048bb002dd10a61 fix segfault if no http section is defined in confguraiton, the bug has been introduced in r1259 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 @@ -1041,15 +1041,13 @@ ngx_http_perl_init_worker(ngx_cycle_t *c pmcf = ngx_http_cycle_get_module_main_conf(cycle, ngx_http_perl_module); - { - - dTHXa(pmcf->perl); - PERL_SET_CONTEXT(pmcf->perl); + if (pmcf) { + dTHXa(pmcf->perl); + PERL_SET_CONTEXT(pmcf->perl); - /* set worker's $$ */ + /* set worker's $$ */ - sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32) ngx_pid); - + sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32) ngx_pid); } return NGX_OK; diff --git a/src/http/ngx_http_config.h b/src/http/ngx_http_config.h --- a/src/http/ngx_http_config.h +++ b/src/http/ngx_http_config.h @@ -69,8 +69,10 @@ typedef struct { ((ngx_http_conf_ctx_t *) cf->ctx)->loc_conf[module.ctx_index] #define ngx_http_cycle_get_module_main_conf(cycle, module) \ - ((ngx_http_conf_ctx_t *) \ - cycle->conf_ctx[ngx_http_module.index])->main_conf[module.ctx_index] + (cycle->conf_ctx[ngx_http_module.index] ? \ + ((ngx_http_conf_ctx_t *) cycle->conf_ctx[ngx_http_module.index]) \ + ->main_conf[module.ctx_index]: \ + NULL) #endif /* _NGX_HTTP_CONFIG_H_INCLUDED_ */