mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-30 03:14:22 +00:00
parent
69aa5a0d2f
commit
1f6635c1fc
@ -119,7 +119,15 @@ class Master:
|
|||||||
"""
|
"""
|
||||||
if not self.should_exit.is_set():
|
if not self.should_exit.is_set():
|
||||||
self.should_exit.set()
|
self.should_exit.set()
|
||||||
asyncio.run_coroutine_threadsafe(self._shutdown(), loop = self.channel.loop)
|
ret = asyncio.run_coroutine_threadsafe(self._shutdown(), loop=self.channel.loop)
|
||||||
|
# Weird band-aid to make sure that self._shutdown() is actually executed,
|
||||||
|
# which otherwise hangs the process as the proxy server is threaded.
|
||||||
|
# This all needs to be simplified when the proxy server runs on asyncio as well.
|
||||||
|
if not self.channel.loop.is_running(): # pragma: no cover
|
||||||
|
try:
|
||||||
|
self.channel.loop.run_until_complete(asyncio.wrap_future(ret))
|
||||||
|
except RuntimeError:
|
||||||
|
pass # Event loop stopped before Future completed.
|
||||||
|
|
||||||
def _change_reverse_host(self, f):
|
def _change_reverse_host(self, f):
|
||||||
"""
|
"""
|
||||||
|
@ -119,9 +119,6 @@ def run(
|
|||||||
if extra:
|
if extra:
|
||||||
opts.update(**extra(args))
|
opts.update(**extra(args))
|
||||||
|
|
||||||
def cleankill(*args, **kwargs):
|
|
||||||
master.shutdown()
|
|
||||||
signal.signal(signal.SIGTERM, cleankill)
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
for signame in ('SIGINT', 'SIGTERM'):
|
for signame in ('SIGINT', 'SIGTERM'):
|
||||||
try:
|
try:
|
||||||
@ -129,6 +126,15 @@ def run(
|
|||||||
except NotImplementedError:
|
except NotImplementedError:
|
||||||
# Not supported on Windows
|
# Not supported on Windows
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Make sure that we catch KeyboardInterrupts on Windows.
|
||||||
|
# https://stackoverflow.com/a/36925722/934719
|
||||||
|
if os.name == "nt":
|
||||||
|
async def wakeup():
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(0.2)
|
||||||
|
asyncio.ensure_future(wakeup())
|
||||||
|
|
||||||
master.run()
|
master.run()
|
||||||
except exceptions.OptionsError as e:
|
except exceptions.OptionsError as e:
|
||||||
print("%s: %s" % (sys.argv[0], e), file=sys.stderr)
|
print("%s: %s" % (sys.argv[0], e), file=sys.stderr)
|
||||||
|
Loading…
Reference in New Issue
Block a user