diff options
author | Biping Meng <mengbiping@gmail.com> | 2017-07-26 18:19:38 +0800 |
---|---|---|
committer | Biping Meng <mengbiping@gmail.com> | 2017-07-26 18:19:38 +0800 |
commit | 1004460ba670c503702a46c01518c1da19c5047c (patch) | |
tree | b1cd51c066ec8cb7d58b7b8885524b9581d81fe8 | |
parent | d409a6c09a873c8131c5e6938aea496904f324c3 (diff) | |
download | mitmproxy-1004460ba670c503702a46c01518c1da19c5047c.tar.gz mitmproxy-1004460ba670c503702a46c01518c1da19c5047c.tar.bz2 mitmproxy-1004460ba670c503702a46c01518c1da19c5047c.zip |
Allow http_connect to create a response for CONNECT request so that connection to server be postponed in upstream mode.
-rw-r--r-- | mitmproxy/proxy/protocol/http.py | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/mitmproxy/proxy/protocol/http.py b/mitmproxy/proxy/protocol/http.py index 502280c1..728c2ba1 100644 --- a/mitmproxy/proxy/protocol/http.py +++ b/mitmproxy/proxy/protocol/http.py @@ -217,16 +217,17 @@ class HttpLayer(base.Layer): return False def handle_upstream_connect(self, f): - self.establish_server_connection( - f.request.host, - f.request.port, - f.request.scheme - ) - self.send_request(f.request) - f.response = self.read_response_headers() - f.response.data.content = b"".join( - self.read_response_body(f.request, f.response) - ) + if not f.response: + self.establish_server_connection( + f.request.host, + f.request.port, + f.request.scheme + ) + self.send_request(f.request) + f.response = self.read_response_headers() + f.response.data.content = b"".join( + self.read_response_body(f.request, f.response) + ) self.send_response(f.response) if is_ok(f.response.status_code): layer = UpstreamConnectLayer(self, f.request) |