aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/protocol/http.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-06-23 14:01:50 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-06-23 14:01:50 +1200
commit2c928181e841b25d5ae8d1390802900b4cc6834e (patch)
tree5bde55e614557f39821e269061e14516b39f3a54 /libmproxy/protocol/http.py
parent237e05c823958dc9ea50c648cc98bedc2ef305d3 (diff)
parente2069d52a81a2aef99dcd2da4fbc61e926b024a0 (diff)
downloadmitmproxy-2c928181e841b25d5ae8d1390802900b4cc6834e.tar.gz
mitmproxy-2c928181e841b25d5ae8d1390802900b4cc6834e.tar.bz2
mitmproxy-2c928181e841b25d5ae8d1390802900b4cc6834e.zip
Merge branch 'master' of ssh.github.com:mitmproxy/mitmproxy
Diffstat (limited to 'libmproxy/protocol/http.py')
-rw-r--r--libmproxy/protocol/http.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py
index 9c143386..9bce7206 100644
--- a/libmproxy/protocol/http.py
+++ b/libmproxy/protocol/http.py
@@ -1328,8 +1328,34 @@ class HTTPHandler(ProtocolHandler):
# value at flow.server_conn
self.c.set_server_address((request.host, request.port))
flow.server_conn = self.c.server_conn
-
+
+ elif request.form_in == "relative":
+ if self.c.config.mode == "spoof":
+ # Host header
+ h = request.pretty_host(hostheader=True)
+ if h is None:
+ raise http.HttpError(
+ 400,
+ "Invalid request: No host information"
+ )
+ p = http.parse_url("http://" + h)
+ request.scheme = p[0]
+ request.host = p[1]
+ request.port = p[2]
+ self.c.set_server_address((request.host, request.port))
+ flow.server_conn = self.c.server_conn
+
+ if self.c.config.mode == "sslspoof":
+ # SNI is processed in server.py
+ if not (flow.server_conn and flow.server_conn.ssl_established):
+ print ":::::::::::::::"
+ raise http.HttpError(
+ 400,
+ "Invalid request: No host information"
+ )
+
return None
+
raise http.HttpError(
400, "Invalid HTTP request form (expected: %s, got: %s)" % (
self.expected_form_in, request.form_in