aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/protocol/http.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-08-18 01:54:45 +0200
committerMaximilian Hils <git@maximilianhils.com>2014-08-18 01:54:45 +0200
commit3d861d7a676f09856225de692a8a76a588003027 (patch)
tree8782fea7d752e4e3f1893844894df12333bf627d /libmproxy/protocol/http.py
parent94fbf066f772032d9ccfdf351c2e50c1488c1d68 (diff)
downloadmitmproxy-3d861d7a676f09856225de692a8a76a588003027.tar.gz
mitmproxy-3d861d7a676f09856225de692a8a76a588003027.tar.bz2
mitmproxy-3d861d7a676f09856225de692a8a76a588003027.zip
make sure that flow.server_conn is set when script hook is called
Diffstat (limited to 'libmproxy/protocol/http.py')
-rw-r--r--libmproxy/protocol/http.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py
index b8eca7d8..572a62fa 100644
--- a/libmproxy/protocol/http.py
+++ b/libmproxy/protocol/http.py
@@ -958,7 +958,7 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin):
# sent through to the Master.
flow.request = req
request_reply = self.c.channel.ask("request", flow.request)
- self.determine_server_address(flow)
+ self.determine_server_address(flow, flow.request)
flow.server_conn = self.c.server_conn # Update server_conn attribute on the flow
if request_reply is None or request_reply == KILL:
@@ -1127,18 +1127,19 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin):
else:
return True
elif request.form_in == self.expected_form_in:
+ if request.form_in == "absolute":
+ if request.scheme != "http":
+ raise http.HttpError(400, "Invalid request scheme: %s" % request.scheme)
+ self.determine_server_address(flow, request)
request.form_out = self.expected_form_out
return True
raise http.HttpError(400, "Invalid HTTP request form (expected: %s, got: %s)" %
(self.expected_form_in, request.form_in))
- def determine_server_address(self, flow):
- if flow.request.form_in == "absolute":
- if flow.request.scheme != "http":
- raise http.HttpError(400, "Invalid request scheme: %s" % flow.request.scheme)
-
- self.c.set_server_address((flow.request.host, flow.request.port),
+ def determine_server_address(self, flow, request):
+ if request.form_in == "absolute":
+ self.c.set_server_address((request.host, request.port),
proxy.AddressPriority.FROM_PROTOCOL)
flow.server_conn = self.c.server_conn # Update server_conn attribute on the flow