summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--methods/http.cc6
-rwxr-xr-xtest/integration/test-proxy-connect22
2 files changed, 25 insertions, 3 deletions
diff --git a/methods/http.cc b/methods/http.cc
index d3e16bba3..a4d187189 100644
--- a/methods/http.cc
+++ b/methods/http.cc
@@ -320,14 +320,14 @@ static ResultState UnwrapHTTPConnect(std::string Host, int Port, URI Proxy, std:
std::string ProperHost;
if (Host.find(':') != std::string::npos)
- ProperHost = '[' + Proxy.Host + ']';
+ ProperHost = '[' + Host + ']';
else
- ProperHost = Proxy.Host;
+ ProperHost = Host;
// Build the connect
Req << "CONNECT " << Host << ":" << std::to_string(Port) << " HTTP/1.1\r\n";
if (Proxy.Port != 0)
- Req << "Host: " << ProperHost << ":" << std::to_string(Proxy.Port) << "\r\n";
+ Req << "Host: " << ProperHost << ":" << std::to_string(Port) << "\r\n";
else
Req << "Host: " << ProperHost << "\r\n";
diff --git a/test/integration/test-proxy-connect b/test/integration/test-proxy-connect
new file mode 100755
index 000000000..17927c9db
--- /dev/null
+++ b/test/integration/test-proxy-connect
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+setupenvironment
+configarchitecture 'amd64'
+
+buildsimplenativepackage 'unrelated' 'all' '0.5~squeeze1' 'unstable'
+
+setupaptarchive
+changetowebserver --request-absolute='uri'
+
+
+msgmsg 'Check that host header we send for CONNECT is for target, not proxy'
+echo "deb https://example.example/ example example" > rootdir/etc/apt/sources.list
+rm -f rootdir/etc/apt/sources.list.d/*
+echo "Acquire::http::Proxy \"http://localhost:${APTHTTPPORT}\";" > rootdir/etc/apt/apt.conf.d/99proxy
+
+aptget update >/dev/null 2>&1
+testsuccessequal "CONNECT example.example:443 HTTP/1.1\r
+Host: example.example:443\r" grep -A1 "^CONNECT" aptarchive/webserver.log