aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-04-09 14:20:08 -0700
committerMaximilian Hils <git@maximilianhils.com>2016-04-09 14:20:08 -0700
commit5c8e7a090eacd7e94bf3979752d969248716fa81 (patch)
tree2fd26880644e1655467b5267e30dd078c6eac95b
parentd6a5291f362ed18f8e2d927a67d1ec3287806294 (diff)
downloadmitmproxy-5c8e7a090eacd7e94bf3979752d969248716fa81.tar.gz
mitmproxy-5c8e7a090eacd7e94bf3979752d969248716fa81.tar.bz2
mitmproxy-5c8e7a090eacd7e94bf3979752d969248716fa81.zip
fix server replay shutdown
-rw-r--r--mitmproxy/flow.py30
1 files changed, 19 insertions, 11 deletions
diff --git a/mitmproxy/flow.py b/mitmproxy/flow.py
index eefe1b5e..047ec68b 100644
--- a/mitmproxy/flow.py
+++ b/mitmproxy/flow.py
@@ -802,29 +802,37 @@ class FlowMaster(controller.Master):
rflow = self.server_playback.next_flow(flow)
if not rflow:
return None
- response = HTTPResponse.from_state(rflow.response.get_state())
+ response = rflow.response.copy()
response.is_replay = True
if self.refresh_server_playback:
response.refresh()
flow.response = response
- if self.server_playback.count() == 0:
- self.stop_server_playback()
return True
return None
def tick(self, q, timeout):
if self.client_playback:
- e = [
- self.client_playback.done(),
- self.client_playback.exit,
+ stop = (
+ self.client_playback.done() and
self.state.active_flow_count() == 0
- ]
- if all(e):
+ )
+ exit = stop and self.client_playback.exit
+ if stop:
+ self.stop_client_playback()
+ if exit:
self.shutdown()
self.client_playback.tick(self)
- if self.client_playback.done():
- self.client_playback = None
+ if self.server_playback:
+ stop = (
+ self.server_playback.count() == 0 and
+ self.state.active_flow_count() == 0
+ )
+ exit = stop and self.server_playback.exit
+ if stop:
+ self.stop_server_playback()
+ if exit:
+ self.shutdown()
return super(FlowMaster, self).tick(q, timeout)
def duplicate_flow(self, f):
@@ -1114,7 +1122,7 @@ def read_flows_from_paths(paths):
flows = []
for path in paths:
path = os.path.expanduser(path)
- with file(path, "rb") as f:
+ with open(path, "rb") as f:
flows.extend(FlowReader(f).stream())
except IOError as e:
raise FlowReadError(e.strerror)