aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-02-16 22:37:04 +1300
committerAldo Cortesi <aldo@nullcube.com>2011-02-16 22:37:04 +1300
commit8a9f20b78cf1ae51d4c10cd892500c252aef2ca3 (patch)
tree6e543c9d57ed75736a7e99bdd1245e317e0954d6
parent0dd1aa7cc7b15b3bedc3dc4da2fc15d5b726c10a (diff)
downloadmitmproxy-8a9f20b78cf1ae51d4c10cd892500c252aef2ca3.tar.gz
mitmproxy-8a9f20b78cf1ae51d4c10cd892500c252aef2ca3.tar.bz2
mitmproxy-8a9f20b78cf1ae51d4c10cd892500c252aef2ca3.zip
Don't leave dangling browser connections for pipelined requests.
-rw-r--r--libmproxy/dump.py4
-rw-r--r--libmproxy/flow.py3
-rw-r--r--libmproxy/proxy.py3
3 files changed, 8 insertions, 2 deletions
diff --git a/libmproxy/dump.py b/libmproxy/dump.py
index 7eff4992..039fb9a7 100644
--- a/libmproxy/dump.py
+++ b/libmproxy/dump.py
@@ -20,6 +20,8 @@ class DumpMaster(flow.FlowMaster):
def handle_response(self, msg):
f = flow.FlowMaster.handle_response(self, msg)
+ if not f:
+ return
if 0 < self.verbosity < 3:
print >> self.outfile, ">>",
print >> self.outfile, msg.request.short()
@@ -41,6 +43,8 @@ class DumpMaster(flow.FlowMaster):
print >> self.outfile, "\t", i
print >> self.outfile, "<<"
msg.ack()
+ self.state.delete_flow(f)
+ print [i.get_state() for i in self.state.flow_list]
# begin nocover
diff --git a/libmproxy/flow.py b/libmproxy/flow.py
index 5aba5f76..63da0230 100644
--- a/libmproxy/flow.py
+++ b/libmproxy/flow.py
@@ -183,7 +183,8 @@ class State:
"""
f = self.flow_map.get(req.client_conn)
if not f:
- return False
+ f = Flow(req.client_conn)
+ self.add_browserconnect(f)
f.request = req
return f
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py
index ff0d9a96..54ff2ec3 100644
--- a/libmproxy/proxy.py
+++ b/libmproxy/proxy.py
@@ -454,8 +454,8 @@ class ProxyHandler(SocketServer.StreamRequestHandler):
def handle(self):
cc = ClientConnection(self.client_address)
+ cc.send(self.mqueue)
while not cc.close:
- cc.send(self.mqueue)
self.handle_request(cc)
cc = cc.copy()
self.finish()
@@ -471,6 +471,7 @@ class ProxyHandler(SocketServer.StreamRequestHandler):
if request is None:
cc.close = True
return
+
if request.is_response():
response = request
request = False