diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod index be6b7eea19aa8cf51602cabfb4f3422bb092ca69..e2857f24b70e56fbfca1e7ed987deb19f1346783 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod +++ b/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod @@ -85,6 +85,11 @@ constant DAV_STORAGE_FULL = 507; // RFC 2518 10.6: Insufficient Storage proxy_headers["Proxy-Authorization"] = "Basic " + MIME.encode_base64((user || "") + ":" + (password || "")); + if (has_value(proxy->host, ":")) { + proxy_headers["host"] = "[" + proxy->host + "]:" + proxy->port; + } else { + proxy_headers["host"] = proxy->host + ":" + proxy->port; + } } if (url->scheme == "http") { @@ -463,6 +468,11 @@ void do_async_proxied_method(string|Standards.URI proxy, proxy_headers["Proxy-Authorization"] = "Basic " + MIME.encode_base64((user || "") + ":" + (password || "")); + if (has_value(proxy->host, ":")) { + proxy_headers["host"] = "[" + proxy->host + "]:" + proxy->port; + } else { + proxy_headers["host"] = proxy->host + ":" + proxy->port; + } } if (url->scheme == "http") {