You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by mi...@apache.org on 2013/05/13 16:45:49 UTC

svn commit: r1481891 - in /httpd/httpd/trunk: CHANGES modules/proxy/proxy_util.c

Author: minfrin
Date: Mon May 13 14:45:49 2013
New Revision: 1481891

URL: http://svn.apache.org/r1481891
Log:
mod_proxy: Ensure we don't attempt to amend a table we are iterating
through, ensuring that all headers listed by Connection are removed.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/proxy/proxy_util.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1481891&r1=1481890&r2=1481891&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Mon May 13 14:45:49 2013
@@ -1,6 +1,10 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_proxy: Ensure we don't attempt to amend a table we are iterating
+     through, ensuring that all headers listed by Connection are removed.
+     [Graham Leggett, Co-Advisor <coad measurement-factory.com>]
+
   *) core: apachectl -S prints wildcard name-based virtual hosts twice. 
      PR54948 [Eric Covener]
 

Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=1481891&r1=1481890&r2=1481891&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/trunk/modules/proxy/proxy_util.c Mon May 13 14:45:49 2013
@@ -3000,13 +3000,13 @@ static int clear_conn_headers(void *data
     return 1;
 }
 
-static void proxy_clear_connection(apr_pool_t *p, apr_table_t *headers)
+static void proxy_clear_connection(request_rec *r, apr_table_t *headers)
 {
     header_dptr x;
-    x.pool = p;
+    x.pool = r->pool;
     x.table = headers;
     apr_table_unset(headers, "Proxy-Connection");
-    apr_table_do(clear_conn_headers, &x, headers, "Connection", NULL);
+    apr_table_do(clear_conn_headers, &x, r->headers_in, "Connection", NULL);
     apr_table_unset(headers, "Connection");
 }
 
@@ -3194,7 +3194,7 @@ PROXY_DECLARE(int) ap_proxy_create_hdrbr
      * apr is compiled with APR_POOL_DEBUG.
      */
     headers_in_copy = apr_table_copy(r->pool, r->headers_in);
-    proxy_clear_connection(p, headers_in_copy);
+    proxy_clear_connection(r, headers_in_copy);
     /* send request headers */
     headers_in_array = apr_table_elts(headers_in_copy);
     headers_in = (const apr_table_entry_t *) headers_in_array->elts;