]> git.kaiwu.me - nginx.git/commitdiff
fix segfault if no http section is defined in confguraiton,
authorIgor Sysoev <igor@sysoev.ru>
Wed, 15 Apr 2009 20:26:33 +0000 (20:26 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 15 Apr 2009 20:26:33 +0000 (20:26 +0000)
the bug has been introduced in r1259

src/http/modules/perl/ngx_http_perl_module.c
src/http/ngx_http_config.h

index bad2454ee9f5d6233be77eaa0f00b2015c89e5e4..833e90f9dc3a0398a95ad13bf6b65e7c08e402d5 100644 (file)
@@ -1041,15 +1041,13 @@ ngx_http_perl_init_worker(ngx_cycle_t *cycle)
 
     pmcf = ngx_http_cycle_get_module_main_conf(cycle, ngx_http_perl_module);
 
-    {
-
-    dTHXa(pmcf->perl);
-    PERL_SET_CONTEXT(pmcf->perl);
-
-    /* set worker's $$ */
+    if (pmcf) {
+        dTHXa(pmcf->perl);
+        PERL_SET_CONTEXT(pmcf->perl);
 
-    sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32) ngx_pid);
+        /* set worker's $$ */
 
+        sv_setiv(GvSV(gv_fetchpv("$", TRUE, SVt_PV)), (I32) ngx_pid);
     }
 
     return NGX_OK;
index 66292105a40277ca8932eec5adaaba080287a1e8..74f6f6c5144feca536166bd8e7366a9a9d6d1620 100644 (file)
@@ -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_ */