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)