]> granicus.if.org Git - apache/commitdiff
Merge r1334343 from trunk:
authorJim Jagielski <jim@apache.org>
Thu, 2 Aug 2012 13:07:31 +0000 (13:07 +0000)
committerJim Jagielski <jim@apache.org>
Thu, 2 Aug 2012 13:07:31 +0000 (13:07 +0000)
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 <naohiro ooiwa miraclelinux com>, 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
STATUS
modules/proxy/mod_proxy_ajp.c

diff --git a/CHANGES b/CHANGES
index 644f00731d8d90f72b85dcc04c9f013c492f337f..1e6e5a6ac1cb6353167619531638f72b1007de4c 100644 (file)
--- 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 <heinenn google.com>]
 
+  *) mod_proxy_ajp: Reduce memory usage in case of many keep-alive requests on
+     one connection. PR 52275. [Naohiro Ooiwa <naohiro ooiwa miraclelinux com>]
+
   *) 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 cc91d8a0459cb214f773d87fc5891fb9e7c1d06b..8bfae3be6f4ab8a85a26446772916d24f933a4a2 100644 (file)
--- 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 <naohiro ooiwa miraclelinux com>,
-     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
index 93cb1530988dd66d7abe3b620a380a54d0601465..c9f58171f525eef3f82c90ef1cc94065f2d651fd 100644 (file)
@@ -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 */