aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/master.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2018-04-02 11:03:05 +1200
committerAldo Cortesi <aldo@corte.si>2018-04-02 11:03:05 +1200
commit2b040ff09374ad50b0878c18296beb4d9147d075 (patch)
tree228c896bff7f1b0b74f4df15b6c1ffa62ecb0a79 /mitmproxy/master.py
parent28a8ddc0e827149c76a738e6363713ed2ebc0eac (diff)
downloadmitmproxy-2b040ff09374ad50b0878c18296beb4d9147d075.tar.gz
mitmproxy-2b040ff09374ad50b0878c18296beb4d9147d075.tar.bz2
mitmproxy-2b040ff09374ad50b0878c18296beb4d9147d075.zip
asyncio: make http2 tests pass
Diffstat (limited to 'mitmproxy/master.py')
-rw-r--r--mitmproxy/master.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/mitmproxy/master.py b/mitmproxy/master.py
index 2f47ae09..b1dd7d52 100644
--- a/mitmproxy/master.py
+++ b/mitmproxy/master.py
@@ -92,13 +92,12 @@ class Master:
async def main(self):
while True:
- if self.should_exit.is_set():
+ try:
+ mtype, obj = await self.event_queue.get()
+ except RuntimeError:
return
- mtype, obj = await self.event_queue.get()
if mtype not in eventsequence.Events:
- raise exceptions.ControlException(
- "Unknown event %s" % repr(mtype)
- )
+ raise exceptions.ControlException("Unknown event %s" % repr(mtype))
self.addons.handle_lifecycle(mtype, obj)
self.event_queue.task_done()
@@ -117,8 +116,12 @@ class Master:
self.start()
asyncio.ensure_future(self.main())
asyncio.ensure_future(self.tick())
- asyncio.get_event_loop().run_forever()
- self.shutdown()
+ loop = asyncio.get_event_loop()
+ try:
+ loop.run_forever()
+ finally:
+ self.shutdown()
+ loop.close()
self.addons.trigger("done")
def shutdown(self):