mirror of
https://github.com/apache/httpd.git
synced 2025-08-08 15:02:10 +03:00
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. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1572627 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -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 {
|
||||
|
@@ -1975,10 +1975,25 @@ static int proxy_http_handler(request_rec *r, proxy_worker *worker,
|
||||
* 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
|
||||
|
@@ -1405,7 +1405,6 @@ static void socket_cleanup(proxy_conn_rec *conn)
|
||||
{
|
||||
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 *p, request_rec *r,
|
||||
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;
|
||||
|
Reference in New Issue
Block a user