]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Abort if the MPM is changed across restart.
authorJeff Trawick <trawick@apache.org>
Wed, 6 Apr 2011 14:49:45 +0000 (14:49 +0000)
committerJeff Trawick <trawick@apache.org>
Wed, 6 Apr 2011 14:49:45 +0000 (14:49 +0000)
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

CHANGES
server/mpm_common.c

diff --git a/CHANGES b/CHANGES
index ef7c157182c6b3b3bc1706c0da87064a261f957d..e39bd08f20ca693ba931ae62f85654c4c0fbeaf0 100644 (file)
--- 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 <peter pramberger.at>, Jim Jagielski]
 
index 99240a0b6ae95cad89847bf60e0d60d7e70186d3..852ef076ead1fba7f7eb3388870c68fd8c8ce328 100644 (file)
@@ -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;
 }