From 6b22da6a34f9ab4809bac5d2c940a23e165012ee Mon Sep 17 00:00:00 2001 From: Samoilenko Roman Date: Sun, 14 Jan 2018 22:54:09 +0200 Subject: Fix #2768 (#2778) --- mitmproxy/proxy/server.py | 7 ++++--- test/mitmproxy/proxy/test_server.py | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mitmproxy/proxy/server.py b/mitmproxy/proxy/server.py index 5171fbee..5df5383a 100644 --- a/mitmproxy/proxy/server.py +++ b/mitmproxy/proxy/server.py @@ -114,9 +114,9 @@ class ConnectionHandler: def handle(self): self.log("clientconnect", "info") - root_layer = self._create_root_layer() - + root_layer = None try: + root_layer = self._create_root_layer() root_layer = self.channel.ask("clientconnect", root_layer) root_layer() except exceptions.Kill: @@ -151,7 +151,8 @@ class ConnectionHandler: print("Please lodge a bug report at: https://github.com/mitmproxy/mitmproxy", file=sys.stderr) self.log("clientdisconnect", "info") - self.channel.tell("clientdisconnect", root_layer) + if root_layer is not None: + self.channel.tell("clientdisconnect", root_layer) self.client_conn.finish() def log(self, msg, level): diff --git a/test/mitmproxy/proxy/test_server.py b/test/mitmproxy/proxy/test_server.py index 8ec83d18..87ec443a 100644 --- a/test/mitmproxy/proxy/test_server.py +++ b/test/mitmproxy/proxy/test_server.py @@ -511,6 +511,14 @@ class TestReverse(tservers.ReverseProxyTest, CommonMixin, TcpMixin): req = self.master.state.flows[0].request assert req.host_header == "127.0.0.1" + def test_selfconnection(self): + self.options.mode = "reverse:http://127.0.0.1:0" + + p = self.pathoc() + with p.connect(): + p.request("get:/") + assert self.master.has_log("The proxy shall not connect to itself.") + class TestReverseSSL(tservers.ReverseProxyTest, CommonMixin, TcpMixin): reverse = True -- cgit v1.2.3