From a9bd3562dcc497273c30fbb49354f14d2150cb54 Mon Sep 17 00:00:00 2001 From: Graham Leggett Date: Sun, 25 Mar 2012 21:27:29 +0000 Subject: [PATCH] Backport: core: Fix breakage of Listen directives with MPMs that use a per-directory config. PR 52904. Submitted by: sf Reviewed by: covener, minfrin git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1305145 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ STATUS | 6 ------ server/listen.c | 12 ++++-------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index 0080a01d78..dbd409c462 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,9 @@ Changes with Apache 2.4.2 envvars: Fix insecure handling of LD_LIBRARY_PATH that could lead to the current working directory to be searched for DSOs. [Stefan Fritsch] + *) core: Fix breakage of Listen directives with MPMs that use a + per-directory config. PR 52904. [Stefan Fritsch] + *) core: Disallow directives in AllowOverrideList which are only allowed in VirtualHost or server context. These are usually not prepared to be called in .htaccess files. [Stefan Fritsch] diff --git a/STATUS b/STATUS index f127a33350..729f9a2ace 100644 --- a/STATUS +++ b/STATUS @@ -88,12 +88,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * core: Unbreak external MPMs with per-dir config. - PR: 52904 - Trunk patch: http://svn.apache.org/viewvc?rev=1304874&view=rev - http://svn.apache.org/viewvc?rev=1304875&view=rev - 2.4.x patch: Trunk patch works - +1: sf, covener, minfrin PATCHES PROPOSED TO BACKPORT FROM TRUNK: diff --git a/server/listen.c b/server/listen.c index a4935aaac1..a85095d456 100644 --- a/server/listen.c +++ b/server/listen.c @@ -238,7 +238,7 @@ static apr_status_t close_listeners_on_exec(void *v) static const char *alloc_listener(process_rec *process, char *addr, apr_port_t port, const char* proto, - void *dummy) + void *slave) { ap_listen_rec **walk, *last; apr_status_t status; @@ -273,7 +273,7 @@ static const char *alloc_listener(process_rec *process, char *addr, } if (found_listener) { - if (ap_listeners->slave != dummy) { + if (ap_listeners->slave != slave) { return "Cannot define a slave on the same IP:port as a Listener"; } return NULL; @@ -333,7 +333,7 @@ static const char *alloc_listener(process_rec *process, char *addr, last->next = new; last = new; } - new->slave = dummy; + new->slave = slave; } return NULL; @@ -612,10 +612,6 @@ AP_DECLARE(void) ap_listen_pre_config(void) ap_listenbacklog = DEFAULT_LISTENBACKLOG; } -/* Hack: populate an extra field - * When this gets called from a Listen directive, dummy is null. - * So we can use non-null dummy to pass a data pointer without conflict - */ AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy, int argc, char *const argv[]) { @@ -662,7 +658,7 @@ AP_DECLARE_NONSTD(const char *) ap_set_listener(cmd_parms *cmd, void *dummy, ap_str_tolower(proto); } - return alloc_listener(cmd->server->process, host, port, proto, dummy); + return alloc_listener(cmd->server->process, host, port, proto, NULL); } AP_DECLARE_NONSTD(const char *) ap_set_listenbacklog(cmd_parms *cmd, -- 2.40.0