Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions sipyco/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ def atexit_register_coroutine(coroutine, *, loop=None):


HAS_SIGHUP = hasattr(signal, "SIGHUP")
HAS_SIGBREAK = hasattr(signal, "SIGBREAK")


class SignalHandler:
Expand All @@ -158,6 +159,8 @@ def setup(self):
self.prev_sigterm = signal.signal(signal.SIGTERM, lambda sig, frame: None)
if HAS_SIGHUP:
self.prev_sighup = signal.signal(signal.SIGHUP, lambda sig, frame: None)
elif HAS_SIGBREAK:
self.prev_sigbreak = signal.signal(signal.SIGBREAK, lambda sig, frame: None)
self.rsock, self.wsock = socket.socketpair()
self.rsock.setblocking(0)
self.wsock.setblocking(0)
Expand All @@ -171,6 +174,8 @@ def teardown(self):
signal.signal(signal.SIGTERM, self.prev_sigterm)
if HAS_SIGHUP:
signal.signal(signal.SIGHUP, self.prev_sighup)
elif HAS_SIGBREAK:
signal.signal(signal.SIGBREAK, self.prev_sigbreak)

async def wait_terminate(self):
loop = asyncio.get_event_loop()
Expand All @@ -188,6 +193,10 @@ async def wait_terminate(self):
print()
print("Caught SIGHUP, terminating...")
break
elif HAS_SIGBREAK and signum == signal.SIGBREAK:
print()
print("Caught SIGBREAK, terminating...")
break


class SimpleSSLConfig:
Expand Down