1 Commits

Author SHA1 Message Date
Solly Ross 3ee9ff7f4d 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
2014-01-30 17:26:17 -05:00
+12 -8
View File
@@ -913,17 +913,21 @@ class WebSocketServer(object):
original_signals = { original_signals = {
signal.SIGINT: signal.getsignal(signal.SIGINT), signal.SIGINT: signal.getsignal(signal.SIGINT),
signal.SIGTERM: signal.getsignal(signal.SIGTERM), 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.SIGINT, self.do_SIGINT)
signal.signal(signal.SIGTERM, self.do_SIGTERM) signal.signal(signal.SIGTERM, self.do_SIGTERM)
if not multiprocessing:
# os.fork() (python 2.4) child reaper if getattr(signal, 'SIGCHLD', None) is not None:
signal.signal(signal.SIGCHLD, self.fallback_SIGCHLD) if not multiprocessing:
else: # os.fork() (python 2.4) child reaper
# make sure that _cleanup is called when children die signal.signal(signal.SIGCHLD, self.fallback_SIGCHLD)
# by calling active_children on SIGCHLD else:
signal.signal(signal.SIGCHLD, self.multiprocessing_SIGCHLD) # make sure that _cleanup is called when children die
# by calling active_children on SIGCHLD
signal.signal(signal.SIGCHLD, self.multiprocessing_SIGCHLD)
last_active_time = self.launch_time last_active_time = self.launch_time
try: try: