From e82ed55516fbbba252b6dbfede49745eeea9e269 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Wed, 24 May 2017 10:40:40 +0200 Subject: close existing server_conn before replacing it --- mitmproxy/net/tcp.py | 4 +++- mitmproxy/proxy/protocol/http_replay.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mitmproxy/net/tcp.py b/mitmproxy/net/tcp.py index 73b1088f..f17943c1 100644 --- a/mitmproxy/net/tcp.py +++ b/mitmproxy/net/tcp.py @@ -569,7 +569,9 @@ class TCPClient(_Connection): # Make sure to close the real socket, not the SSL proxy. # OpenSSL is really good at screwing up, i.e. when trying to recv from a failed connection, # it tries to renegotiate... - if isinstance(self.connection, SSL.Connection): + if not self.connection: + return + elif isinstance(self.connection, SSL.Connection): close_socket(self.connection._socket) else: close_socket(self.connection) diff --git a/mitmproxy/proxy/protocol/http_replay.py b/mitmproxy/proxy/protocol/http_replay.py index 25867871..1aa91847 100644 --- a/mitmproxy/proxy/protocol/http_replay.py +++ b/mitmproxy/proxy/protocol/http_replay.py @@ -83,7 +83,11 @@ class RequestReplayThread(basethread.BaseThread): server.wfile.write(http1.assemble_request(r)) server.wfile.flush() + + if self.f.server_conn: + self.f.server_conn.close() self.f.server_conn = server + self.f.response = http.HTTPResponse.wrap( http1.read_response( server.rfile, -- cgit v1.2.3