From: Jim Jagielski Date: Tue, 7 Mar 2017 19:10:19 +0000 (+0000) Subject: Defensive X-Git-Tag: 2.5.0-alpha~581 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=053c3520faed0b10eb8c54ae80d4630c9b7c1595;p=apache Defensive git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1785871 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/docs/log-message-tags/next-number b/docs/log-message-tags/next-number index e7ea1abc3c..8a0934b514 100644 --- a/docs/log-message-tags/next-number +++ b/docs/log-message-tags/next-number @@ -1 +1 @@ -10019 +10020 diff --git a/modules/proxy/mod_proxy_hcheck.c b/modules/proxy/mod_proxy_hcheck.c index 04563986be..af31d90975 100644 --- a/modules/proxy/mod_proxy_hcheck.c +++ b/modules/proxy/mod_proxy_hcheck.c @@ -981,11 +981,13 @@ static int hc_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { apr_status_t rv; - sctx_t *ctx; APR_OPTIONAL_FN_TYPE(ap_watchdog_get_instance) *hc_watchdog_get_instance; APR_OPTIONAL_FN_TYPE(ap_watchdog_register_callback) *hc_watchdog_register_callback; + if (ap_state_query(AP_SQ_MAIN_STATE) == AP_SQ_MS_CREATE_PRE_CONFIG) { + return OK; + } hc_watchdog_get_instance = APR_RETRIEVE_OPTIONAL_FN(ap_watchdog_get_instance); hc_watchdog_register_callback = APR_RETRIEVE_OPTIONAL_FN(ap_watchdog_register_callback); if (!hc_watchdog_get_instance || !hc_watchdog_register_callback) { @@ -1003,9 +1005,16 @@ static int hc_post_config(apr_pool_t *p, apr_pool_t *plog, return !OK; } while (s) { - ctx = (sctx_t *) ap_get_module_config(s->module_config, - &proxy_hcheck_module); - + sctx_t *ctx = ap_get_module_config(s->module_config, + &proxy_hcheck_module); + + if (s != ctx->s) { + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, APLOGNO(10019) + "We somehow have a context/server mismatch (%pp:%pp)", + s, ctx->s); + s = s->next; + continue; + } rv = hc_watchdog_register_callback(watchdog, apr_time_from_sec(HCHECK_WATHCHDOG_INTERVAL), ctx,