aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamoilenko Roman <ttahabatt@gmail.com>2018-01-14 22:54:09 +0200
committerMaximilian Hils <git@maximilianhils.com>2018-01-14 21:54:09 +0100
commit6b22da6a34f9ab4809bac5d2c940a23e165012ee (patch)
treeaa3890658e6dadd7073da9e24db4d7743a38b089
parent9a43ff5da107a862169d75fa49fb0d43b172cd3c (diff)
downloadmitmproxy-6b22da6a34f9ab4809bac5d2c940a23e165012ee.tar.gz
mitmproxy-6b22da6a34f9ab4809bac5d2c940a23e165012ee.tar.bz2
mitmproxy-6b22da6a34f9ab4809bac5d2c940a23e165012ee.zip
Fix #2768 (#2778)
-rw-r--r--mitmproxy/proxy/server.py7
-rw-r--r--test/mitmproxy/proxy/test_server.py8
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