]> granicus.if.org Git - apache/commitdiff
* Use the the same hostname for SNI as for the HTTP request when forwarding
authorRuediger Pluem <rpluem@apache.org>
Fri, 4 May 2012 14:02:58 +0000 (14:02 +0000)
committerRuediger Pluem <rpluem@apache.org>
Fri, 4 May 2012 14:02:58 +0000 (14:02 +0000)
  to SSL backends.

PR: 53134
Based on a patch from: Michael Weiser <michael weiser.dinsnail.net>
Reviewed by: rpluem

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1333969 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/proxy/mod_proxy_http.c

diff --git a/CHANGES b/CHANGES
index 7ca62ea346766218ad30bec8ae0be85b2a65fd98..ea45df391fee626349b517f4ad432e60b2081d82 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,10 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_proxy: Use the the same hostname for SNI as for the HTTP request when
+     forwarding to SSL backends. PR 53134.
+     [Michael Weiser <michael weiser.dinsnail.net>, Ruediger Pluem]
+
   *) mod_ssl: Add support for TLS Next Protocol Negotiation.  PR 52210.
      [Matthew Steele <mdsteele google.com>]
 
index 97b8edd3d88690afccb1d8406c4c07c62a00985d..b219854400d9991b3b4702fb92e5c5ba7e381870 100644 (file)
@@ -2237,8 +2237,24 @@ static int proxy_http_handler(request_rec *r, proxy_worker *worker,
              * so.
              */
             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",
-                              uri->hostname);
+                              ssl_hostname);
             }
         }