diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-12-16 10:54:36 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-12-16 10:54:36 +1300 |
commit | 61e552553cd2ae03b115756551e73a32ede48663 (patch) | |
tree | 1c33eebaeb55964b2aeb6a49e8b4fca0e2108310 | |
parent | 6b5673e84911f3e2b1599c22c9b4f482a55b9ef1 (diff) | |
download | mitmproxy-61e552553cd2ae03b115756551e73a32ede48663.tar.gz mitmproxy-61e552553cd2ae03b115756551e73a32ede48663.tar.bz2 mitmproxy-61e552553cd2ae03b115756551e73a32ede48663.zip |
Catch occasional protocol errors in regular connect
Fixes #1843 and #1847
-rw-r--r-- | mitmproxy/proxy/protocol/http.py | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/mitmproxy/proxy/protocol/http.py b/mitmproxy/proxy/protocol/http.py index f3e0f514..50d64e17 100644 --- a/mitmproxy/proxy/protocol/http.py +++ b/mitmproxy/proxy/protocol/http.py @@ -182,6 +182,17 @@ class HttpLayer(base.Layer): try: self.set_server((f.request.host, f.request.port)) + + if f.response: + resp = f.response + else: + resp = http.make_connect_response(f.request.data.http_version) + + self.send_response(resp) + + if is_ok(resp.status_code): + layer = self.ctx.next_layer(self) + layer() except ( exceptions.ProtocolException, exceptions.NetlibException ) as e: @@ -192,17 +203,6 @@ class HttpLayer(base.Layer): self.channel.ask("error", f) return False - if f.response: - resp = f.response - else: - resp = http.make_connect_response(f.request.data.http_version) - - self.send_response(resp) - - if is_ok(resp.status_code): - layer = self.ctx.next_layer(self) - layer() - return False def handle_upstream_connect(self, f): |