From a70be8d6360d9e21e0d5a9e2a195db3c3a6d6645 Mon Sep 17 00:00:00 2001 From: Alon Bar-Lev Date: Fri, 31 May 2013 22:07:32 +0300 Subject: [PATCH] websocket: support SIGTERM as exit signal Similar to SIGINT that is already supported, support SIGTERM in daemon and non daemon modes. Signed-off-by: Alon Bar-Lev --- utils/websocket.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/websocket.py b/utils/websocket.py index 3f539a1d..b1a186a2 100644 --- a/utils/websocket.py +++ b/utils/websocket.py @@ -219,8 +219,7 @@ Sec-WebSocket-Accept: %s\r if os.fork() > 0: os._exit(0) # Parent exits # Signal handling - def terminate(a,b): os._exit(0) - signal.signal(signal.SIGTERM, terminate) + signal.signal(signal.SIGTERM, signal.SIG_IGN) signal.signal(signal.SIGINT, signal.SIG_IGN) # Close open files @@ -767,6 +766,10 @@ Sec-WebSocket-Accept: %s\r self.msg("Got SIGINT, exiting") sys.exit(0) + def do_SIGTERM(self, sig, stack): + self.msg("Got SIGTERM, exiting") + sys.exit(0) + def top_new_client(self, startsock, address): """ Do something with a WebSockets client connection. """ # Initialize per client settings @@ -838,8 +841,9 @@ Sec-WebSocket-Accept: %s\r self.started() # Some things need to happen after daemonizing - # Allow override of SIGINT + # Allow override of signals signal.signal(signal.SIGINT, self.do_SIGINT) + signal.signal(signal.SIGTERM, self.do_SIGTERM) if not multiprocessing: # os.fork() (python 2.4) child reaper signal.signal(signal.SIGCHLD, self.fallback_SIGCHLD)