From 7fa9dca0321ab40f13de181154340beb438fdbe6 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 2 Aug 2012 13:07:31 +0000 Subject: [PATCH] Merge r1334343 from trunk: Use short lived pool to avoid memory leaks Remove the comment about binding upstream and downstream connections. It seems to be obsolete since r104604, r104605, r105108. Also avoid allocating memory if we are not handling the connection. PR: 52275 Submitted by: Naohiro Ooiwa , Stefan Fritsch Submitted by: sf Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1368450 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ STATUS | 10 ---------- modules/proxy/mod_proxy_ajp.c | 22 ++++------------------ 3 files changed, 7 insertions(+), 28 deletions(-) diff --git a/CHANGES b/CHANGES index 644f00731d..1e6e5a6ac1 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,9 @@ Changes with Apache 2.4.3 possible XSS for a site where untrusted users can upload files to a location with MultiViews enabled. [Niels Heinen ] + *) mod_proxy_ajp: Reduce memory usage in case of many keep-alive requests on + one connection. PR 52275. [Naohiro Ooiwa ] + *) mod_proxy_balancer: Restore balancing after a failed worker has recovered when using lbmethod_bybusyness. PR 48735. [Jeff Trawick] diff --git a/STATUS b/STATUS index cc91d8a045..8bfae3be6f 100644 --- a/STATUS +++ b/STATUS @@ -99,16 +99,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK: 2.4.x patch: Trunk patch applies. +1: rjung, sf, jim - * proxy_ajp: Use short lived pool to avoid memory leaks. - Remove the comment about binding upstream and downstream connections. It - seems to be obsolete since r104604, r104605, r105108. - Also avoid allocating memory if we are not handling the connection. - PR 52275, submitted by Naohiro Ooiwa , - Stefan Fritsch. - trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1334343 - 2.4.x patch: Trunk patch applies. - +1: rjung, sf, jim - * headers: ap_str(case)cmp_match returns the opposite of what is advertized in the header. trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1366319 diff --git a/modules/proxy/mod_proxy_ajp.c b/modules/proxy/mod_proxy_ajp.c index 93cb153098..c9f58171f5 100644 --- a/modules/proxy/mod_proxy_ajp.c +++ b/modules/proxy/mod_proxy_ajp.c @@ -701,29 +701,15 @@ static int proxy_ajp_handler(request_rec *r, proxy_worker *worker, int retry; proxy_dir_conf *dconf = ap_get_module_config(r->per_dir_config, &proxy_module); - - /* - * Note: Memory pool allocation. - * A downstream keepalive connection is always connected to the existence - * (or not) of an upstream keepalive connection. If this is not done then - * load balancing against multiple backend servers breaks (one backend - * server ends up taking 100% of the load), and the risk is run of - * downstream keepalive connections being kept open unnecessarily. This - * keeps webservers busy and ties up resources. - * - * As a result, we allocate all sockets out of the upstream connection - * pool, and when we want to reuse a socket, we check first whether the - * connection ID of the current upstream connection is the same as that - * of the connection when the socket was opened. - */ - apr_pool_t *p = r->connection->pool; - apr_uri_t *uri = apr_palloc(r->connection->pool, sizeof(*uri)); - + apr_pool_t *p = r->pool; + apr_uri_t *uri; if (strncasecmp(url, "ajp:", 4) != 0) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00894) "declining URL %s", url); return DECLINED; } + + uri = apr_palloc(p, sizeof(*uri)); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00895) "serving URL %s", url); /* create space for state information */ -- 2.40.0