From fd4dd8cb6b9e4e2a0afe0ecbf1bff52c66ce4dba Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 21 Feb 2011 09:54:39 +1300 Subject: First pass of playback function for mitmdump. --- libmproxy/flow.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'libmproxy/flow.py') 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) -- cgit v1.2.3