From ddcec961ec16aeec76e232684b89ea33ef3e0657 Mon Sep 17 00:00:00 2001 From: Solly Ross Date: Thu, 30 Jan 2014 17:24:42 -0500 Subject: [PATCH] Work around lack of SIGCHLD on Windows This only enables the SIGCHLD handler if SIGCHLD exists, such that platforms without SIGCHLD (such as windows) can still run websockify natively. See #108 --- websockify/websockifyserver.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/websockify/websockifyserver.py b/websockify/websockifyserver.py index 01004cc..055bb12 100644 --- a/websockify/websockifyserver.py +++ b/websockify/websockifyserver.py @@ -684,13 +684,15 @@ class WebSockifyServer(object): original_signals = { signal.SIGINT: signal.getsignal(signal.SIGINT), signal.SIGTERM: signal.getsignal(signal.SIGTERM), - signal.SIGCHLD: signal.getsignal(signal.SIGCHLD), } + if getattr(signal, 'SIGCHLD', None) is not None: + original_signals[signal.SIGCHLD] = signal.getsignal(signal.SIGCHLD), signal.signal(signal.SIGINT, self.do_SIGINT) signal.signal(signal.SIGTERM, self.do_SIGTERM) # make sure that _cleanup is called when children die # by calling active_children on SIGCHLD - signal.signal(signal.SIGCHLD, self.multiprocessing_SIGCHLD) + if getattr(signal, 'SIGCHLD', None) is not None: + signal.signal(signal.SIGCHLD, self.multiprocessing_SIGCHLD) last_active_time = self.launch_time try: