diff options
-rw-r--r-- | libmproxy/protocol/http.py | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/libmproxy/protocol/http.py b/libmproxy/protocol/http.py index d9afcbf2..59bd8900 100644 --- a/libmproxy/protocol/http.py +++ b/libmproxy/protocol/http.py @@ -12,8 +12,6 @@ from .primitives import Flow, Error HDR_FORM_URLENCODED = "application/x-www-form-urlencoded" CONTENT_MISSING = 0 -LEGACY = True - def get_line(fp): """ @@ -870,8 +868,10 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin): self.c.log("request", [flow.request._assemble_first_line(flow.request.form_in)]) self.process_request(flow.request) - request_reply = self.c.channel.ask("request" if LEGACY else "httprequest", - flow.request if LEGACY else flow) + request_reply = self.c.channel.ask("request", flow.request) + flow.server_conn = self.c.server_conn # no further manipulation of self.c.server_conn beyond this point. + # we can safely set it as the final attribute valueh here. + if request_reply is None or request_reply == KILL: return False @@ -880,12 +880,8 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin): else: flow.response = self.get_response_from_server(flow.request) - flow.server_conn = self.c.server_conn # no further manipulation of self.c.server_conn beyond this point. - # we can safely set it as the final attribute valueh here. - self.c.log("response", [flow.response._assemble_first_line()]) - response_reply = self.c.channel.ask("response" if LEGACY else "httpresponse", - flow.response if LEGACY else flow) + response_reply = self.c.channel.ask("response", flow.response) if response_reply is None or response_reply == KILL: return False @@ -927,10 +923,9 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin): if flow: flow.error = Error(err) - if not (LEGACY and not flow.request) and not (LEGACY and flow.request and flow.response): - # no flows without request or with both request and response in legacy mode - self.c.channel.ask("error" if LEGACY else "httperror", - flow.error if LEGACY else flow) + if flow.request and not flow.response: + # FIXME: no flows without request or with both request and response at the moement. + self.c.channel.ask("error", flow.error) else: pass # FIXME: Is there any use case for persisting errors that occur outside of flows? @@ -1005,6 +1000,7 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin): directly_addressed_at_mitmproxy = (self.c.mode == "regular" and not self.c.config.forward_proxy) if directly_addressed_at_mitmproxy: self.c.set_server_address((request.host, request.port), AddressPriority.FROM_PROTOCOL) + request.flow.server_conn = self.c.server_conn # Update server_conn attribute on the flow self.c.establish_server_connection() self.c.client_conn.wfile.write( 'HTTP/1.1 200 Connection established\r\n' + @@ -1023,6 +1019,7 @@ class HTTPHandler(ProtocolHandler, TemporaryServerChangeMixin): if not self.c.config.forward_proxy: request.form_out = "origin" self.c.set_server_address((request.host, request.port), AddressPriority.FROM_PROTOCOL) + request.flow.server_conn = self.c.server_conn # Update server_conn attribute on the flow else: raise http.HttpError(400, "Invalid Request") |