1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-08 15:02:10 +03:00

Fix IPv6 literal addresses passed to a proxied backend.

PR 47177
Patch by Carlos Garcia Braschi


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@778531 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Kew
2009-05-25 23:19:16 +00:00
parent e23794e12c
commit fd4393f664
2 changed files with 16 additions and 4 deletions

View File

@@ -6,6 +6,9 @@ Changes with Apache 2.3.3
mod_proxy_ajp: Avoid delivering content from a previous request which mod_proxy_ajp: Avoid delivering content from a previous request which
failed to send a request body. PR 46949 [Ruediger Pluem] failed to send a request body. PR 46949 [Ruediger Pluem]
*) mod_proxy_http: fix Host: header for literal IPv6 addresses.
PR 47177 [Carlos Garcia Braschi <cgbraschi gmail.com>]
*) mod_cache: Add CacheIgnoreURLSessionIdentifiers directive to ignore *) mod_cache: Add CacheIgnoreURLSessionIdentifiers directive to ignore
defined session identifiers encoded in the URL when caching. defined session identifiers encoded in the URL when caching.
[Ruediger Pluem] [Ruediger Pluem]

View File

@@ -713,11 +713,20 @@ int ap_proxy_http_request(apr_pool_t *p, request_rec *r,
e = apr_bucket_pool_create(buf, strlen(buf), p, c->bucket_alloc); e = apr_bucket_pool_create(buf, strlen(buf), p, c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(header_brigade, e); APR_BRIGADE_INSERT_TAIL(header_brigade, e);
if (conf->preserve_host == 0) { if (conf->preserve_host == 0) {
if (uri->port_str && uri->port != DEFAULT_HTTP_PORT) { if (ap_strchr_c(uri->hostname, ':')) { /* if literal IPv6 address */
buf = apr_pstrcat(p, "Host: ", uri->hostname, ":", uri->port_str, if (uri->port_str && uri->port != DEFAULT_HTTP_PORT) {
CRLF, NULL); buf = apr_pstrcat(p, "Host: [", uri->hostname, "]:",
uri->port_str, CRLF, NULL);
} else {
buf = apr_pstrcat(p, "Host: [", uri->hostname, "]", CRLF, NULL);
}
} else { } else {
buf = apr_pstrcat(p, "Host: ", uri->hostname, CRLF, NULL); if (uri->port_str && uri->port != DEFAULT_HTTP_PORT) {
buf = apr_pstrcat(p, "Host: ", uri->hostname, ":",
uri->port_str, CRLF, NULL);
} else {
buf = apr_pstrcat(p, "Host: ", uri->hostname, CRLF, NULL);
}
} }
} }
else { else {