diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-02-21 09:54:39 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-02-21 09:54:39 +1300 |
commit | fd4dd8cb6b9e4e2a0afe0ecbf1bff52c66ce4dba (patch) | |
tree | 47213a766006fdeb644d5225e6e0289980566bc6 /libmproxy/flow.py | |
parent | deb79a9c5a1794ffa5f67fdefdfe24b42eeef9f4 (diff) | |
download | mitmproxy-fd4dd8cb6b9e4e2a0afe0ecbf1bff52c66ce4dba.tar.gz mitmproxy-fd4dd8cb6b9e4e2a0afe0ecbf1bff52c66ce4dba.tar.bz2 mitmproxy-fd4dd8cb6b9e4e2a0afe0ecbf1bff52c66ce4dba.zip |
First pass of playback function for mitmdump.
Diffstat (limited to 'libmproxy/flow.py')
-rw-r--r-- | libmproxy/flow.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libmproxy/flow.py b/libmproxy/flow.py index 16a2714c..4025a30d 100644 --- a/libmproxy/flow.py +++ b/libmproxy/flow.py @@ -328,6 +328,27 @@ class FlowMaster(controller.Master): def __init__(self, server, state): controller.Master.__init__(self, server) self.state = state + self._playback_state = None + + def start_playback(self, flows): + self._playback_state = ServerPlaybackState() + self._playback_state.load(flows) + + def playback(self, flow): + """ + This method should be called by child classes in the handle_request + handler. Returns True if playback has taken place, None if not. + """ + if self._playback_state: + rflow = self._playback_state.next_flow(flow) + if not rflow: + return None + response = proxy.Response.from_state(flow.request, rflow.response.get_state()) + response.set_replay() + flow.response = response + flow.request.ack(response) + return True + return None def handle_clientconnect(self, r): self.state.clientconnect(r) |