httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From yla...@apache.org
Subject svn commit: r1572627 - in /httpd/httpd/trunk/modules/proxy: mod_proxy.h mod_proxy_http.c proxy_util.c
Date Thu, 27 Feb 2014 15:31:59 GMT
Author: ylavic
Date: Thu Feb 27 15:31:58 2014
New Revision: 1572627

URL: http://svn.apache.org/r1572627
Log:
Revert r1572606 for the time being since backport would conflict with 2.4.x's proxy_conn_rec.
The uds_path field is at the end of the struct in 2.4.x but not in trunk.
Fix that first, then recommit.

Modified:
    httpd/httpd/trunk/modules/proxy/mod_proxy.h
    httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
    httpd/httpd/trunk/modules/proxy/proxy_util.c

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy.h?rev=1572627&r1=1572626&r2=1572627&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Thu Feb 27 15:31:58 2014
@@ -254,7 +254,6 @@ typedef struct {
     unsigned int need_flush:1; /* Flag to decide whether we need to flush the
                                 * filter chain or not */
     unsigned int inreslist:1;  /* connection in apr_reslist? */
-    const char  *ssl_hostname; /* Hostname (SNI) in use by SSL connection */
 } proxy_conn_rec;
 
 typedef struct {

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?rev=1572627&r1=1572626&r2=1572627&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Thu Feb 27 15:31:58 2014
@@ -1975,10 +1975,25 @@ static int proxy_http_handler(request_re
              * requested, such that mod_ssl can check if it is requested to do
              * so.
              */
-            if (backend->ssl_hostname) {
-                apr_table_setn(backend->connection->notes,
-                               "proxy-request-hostname",
-                               backend->ssl_hostname);
+            if (is_ssl) {
+                proxy_dir_conf *dconf;
+                const char *ssl_hostname;
+
+                /*
+                 * In the case of ProxyPreserveHost on use the hostname of
+                 * the request if present otherwise use the one from the
+                 * backend request URI.
+                 */
+                dconf = ap_get_module_config(r->per_dir_config, &proxy_module);
+                if ((dconf->preserve_host != 0) && (r->hostname != NULL)) {
+                    ssl_hostname = r->hostname;
+                }
+                else {
+                    ssl_hostname = uri->hostname;
+                }
+
+                apr_table_set(backend->connection->notes, "proxy-request-hostname",
+                              ssl_hostname);
             }
 
             /* Step Three-and-a-Half: See if the socket is still connected (if

Modified: httpd/httpd/trunk/modules/proxy/proxy_util.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/proxy_util.c?rev=1572627&r1=1572626&r2=1572627&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/proxy_util.c (original)
+++ httpd/httpd/trunk/modules/proxy/proxy_util.c Thu Feb 27 15:31:58 2014
@@ -1405,7 +1405,6 @@ static void socket_cleanup(proxy_conn_re
 {
     conn->sock = NULL;
     conn->connection = NULL;
-    conn->ssl_hostname = NULL;
     apr_pool_clear(conn->scpool);
 }
 
@@ -2347,35 +2346,6 @@ ap_proxy_determine_connection(apr_pool_t
         return ap_proxyerror(r, HTTP_FORBIDDEN,
                              "Connect to remote machine blocked");
     }
-    /*
-     * When SSL is configured, determine the hostname (SNI) for the request
-     * and save it in conn->ssl_hostname. Close any reused connection whose
-     * SNI differs.
-     */
-    if (conn->is_ssl) {
-        proxy_dir_conf *dconf;
-        const char *ssl_hostname;
-        /*
-         * In the case of ProxyPreserveHost on use the hostname of
-         * the request if present otherwise use the one from the
-         * backend request URI.
-         */
-        dconf = ap_get_module_config(r->per_dir_config, &proxy_module);
-        if (dconf->preserve_host) {
-            ssl_hostname = r->hostname;
-        }
-        else {
-            ssl_hostname = conn->hostname;
-        }
-        if (conn->ssl_hostname != NULL &&
-                (!ssl_hostname || strcasecmp(conn->ssl_hostname,
-                                             ssl_hostname) != 0)) {
-            socket_cleanup(conn);
-        }
-        if (conn->ssl_hostname == NULL) {
-            conn->ssl_hostname = apr_pstrdup(conn->scpool, ssl_hostname);
-        }
-    }
     ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(00947)
                  "connected %s to %s:%d", *url, conn->hostname, conn->port);
     return OK;



Mime
View raw message