aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-07-10 15:53:53 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-07-10 15:53:53 +1200
commit04d9ec8c3c32a6e53be9f6f05b3ad69ee5af76e4 (patch)
tree00a64e8d15d0bdb205fe6889d36e846291be4433
parent79af9e89c44597e58e6db0486a54e133e9def704 (diff)
downloadmitmproxy-04d9ec8c3c32a6e53be9f6f05b3ad69ee5af76e4.tar.gz
mitmproxy-04d9ec8c3c32a6e53be9f6f05b3ad69ee5af76e4.tar.bz2
mitmproxy-04d9ec8c3c32a6e53be9f6f05b3ad69ee5af76e4.zip
Make WSGI apps work in transparent mode.
-rw-r--r--libmproxy/proxy.py6
-rw-r--r--test/test_proxy.py8
2 files changed, 13 insertions, 1 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index e7b2c409..0d1ad692 100644
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -423,7 +423,11 @@ class AppRegistry:
"""
Returns an WSGIAdaptor instance if request matches an app, or None.
"""
- return self.apps.get((request.host, request.port), None)
+ if (request.host, request.port) in self.apps:
+ return self.apps[(request.host, request.port)]
+ if "host" in request.headers:
+ host = request.headers["host"][0]
+ return self.apps.get((host, request.port), None)
class DummyServer:
diff --git a/test/test_proxy.py b/test/test_proxy.py
index d4d275b5..10587168 100644
--- a/test/test_proxy.py
+++ b/test/test_proxy.py
@@ -21,3 +21,11 @@ def test_app_registry():
r.port = 81
assert not ar.get(r)
+
+
+ r = tutils.treq()
+ r.host = "domain2"
+ r.port = 80
+ assert not ar.get(r)
+ r.headers["host"] = ["domain"]
+ assert ar.get(r)