From 5fab94580e047aa4b5b7815c6e7d2f8a75931209 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Thu, 13 Oct 2016 20:31:14 -0700 Subject: [PATCH 1/2] fix #1605 --- mitmproxy/console/master.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/mitmproxy/console/master.py b/mitmproxy/console/master.py index 257765124..16abcb96a 100644 --- a/mitmproxy/console/master.py +++ b/mitmproxy/console/master.py @@ -685,24 +685,18 @@ class ConsoleMaster(flow.FlowMaster): # Handlers @controller.handler def error(self, f): - f = flow.FlowMaster.error(self, f) - if f: - self.process_flow(f) - return f + super(ConsoleMaster, self).error(f) + self.process_flow(f) @controller.handler def request(self, f): - f = flow.FlowMaster.request(self, f) - if f: - self.process_flow(f) - return f + super(ConsoleMaster, self).request(f) + self.process_flow(f) @controller.handler def response(self, f): - f = flow.FlowMaster.response(self, f) - if f: - self.process_flow(f) - return f + super(ConsoleMaster, self).response(f) + self.process_flow(f) @controller.handler def tcp_message(self, f): From e9284ab7eef2ed37565860acd301b717bfcb6018 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Fri, 14 Oct 2016 01:22:30 -0700 Subject: [PATCH 2/2] add regression test for #1605 --- test/mitmproxy/console/test_master.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/mitmproxy/console/test_master.py b/test/mitmproxy/console/test_master.py index 8388a6bdd..e57846ae5 100644 --- a/test/mitmproxy/console/test_master.py +++ b/test/mitmproxy/console/test_master.py @@ -122,3 +122,16 @@ class TestMaster(mastertest.MasterTest): for i in (1, 2, 3): self.dummy_cycle(m, 1, b"") assert len(m.state.flows) == i + + def test_intercept(self): + """regression test for https://github.com/mitmproxy/mitmproxy/issues/1605""" + m = self.mkmaster(intercept="~b bar") + f = tutils.tflow(req=netlib.tutils.treq(content=b"foo")) + m.request(f) + assert not m.state.flows[0].intercepted + f = tutils.tflow(req=netlib.tutils.treq(content=b"bar")) + m.request(f) + assert m.state.flows[1].intercepted + f = tutils.tflow(resp=netlib.tutils.tresp(content=b"bar")) + m.request(f) + assert m.state.flows[2].intercepted