You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2015/09/18 18:43:25 UTC
svn commit: r1703902 - in /httpd/httpd/trunk: CHANGES
modules/proxy/proxy_util.c
Author: ylavic
Date: Fri Sep 18 16:43:25 2015
New Revision: 1703902
URL: http://svn.apache.org/viewvc?rev=1703902&view=rev
Log:
mod_proxy: Fix ProxySourceAddress binding failure with AH00938. PR 56687.
Proposed by: Arne de Bruijn <apache arbruijn.dds.nl
Reviewed by: ylavic
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=1703902&r1=1703901&r2=1703902&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Fri Sep 18 16:43:25 2015
@@ -1,6 +1,9 @@
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
+ *) mod_proxy: Fix ProxySourceAddress binding failure with AH00938.
+ PR 56687. [Arne de Bruijn <apache arbruijn.dds.nl>
+
*) mod_proxy: don't recyle backend announced "Connection: close" connections
to avoid reusing it should the close be effective after some new request
is ready to be sent. [Yann Ylavic]
Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=1703902&r1=1703901&r2=1703902&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/trunk/modules/proxy/proxy_util.c Fri Sep 18 16:43:25 2015
@@ -2148,7 +2148,14 @@ PROXY_DECLARE(int) ap_proxy_connect_to_b
proxy_function, backend_addr->family, backend_name);
if (conf->source_address) {
- rv = apr_socket_bind(*newsock, conf->source_address);
+ apr_sockaddr_t *local_addr;
+ /* Make a copy since apr_socket_bind() could change
+ * conf->source_address, which we don't want.
+ */
+ local_addr = apr_pmemdup(r->pool, conf->source_address,
+ sizeof(apr_sockaddr_t));
+ local_addr->pool = r->pool;
+ rv = apr_socket_bind(*newsock, local_addr);
if (rv != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, APLOGNO(00938)
"%s: failed to bind socket to local address",