From: Jeff Trawick Date: Wed, 6 Apr 2011 14:49:45 +0000 (+0000) Subject: Abort if the MPM is changed across restart. X-Git-Tag: 2.3.12~96 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=544697d7c3abe45e344f1e3ac3141d686507a077;p=thirdparty%2Fapache%2Fhttpd.git Abort if the MPM is changed across restart. A new MPM can't be expected to manage the existing state, particularly if that includes processes from the previous generation. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1089472 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index ef7c157182c..e39bd08f20c 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,8 @@ Changes with Apache 2.3.12 + *) core: Abort if the MPM is changed across restart. [Jeff Trawick] + *) mod_proxy_ajp: Add support for 'ProxyErrorOverride on'. PR 50945. [Peter Pramberger , Jim Jagielski] diff --git a/server/mpm_common.c b/server/mpm_common.c index 99240a0b6ae..852ef076ead 100644 --- a/server/mpm_common.c +++ b/server/mpm_common.c @@ -386,10 +386,21 @@ AP_DECLARE(const char *)ap_show_mpm(void) AP_DECLARE(const char *)ap_check_mpm(void) { + static const char *last_mpm_name = NULL; + if (!_hooks.link_mpm || _hooks.link_mpm->nelts == 0) return "No MPM loaded."; else if (_hooks.link_mpm->nelts > 1) return "More than one MPM loaded."; - else - return NULL; + + if (last_mpm_name) { + if (strcmp(last_mpm_name, ap_show_mpm())) { + return "The MPM cannot be changed during restart."; + } + } + else { + last_mpm_name = apr_pstrdup(ap_pglobal, ap_show_mpm()); + } + + return NULL; }