diff options
author | Allan Saddi <allan@saddi.com> | 2006-01-05 20:42:02 +0000 |
---|---|---|
committer | Allan Saddi <allan@saddi.com> | 2006-01-05 20:42:02 +0000 |
commit | 6f8f99d9f8724c7536216eb095a0ca1f0e6f3633 (patch) | |
tree | 26f439d8f19daf9c65167b14d8e8d77d3d1c6cb1 | |
parent | 8e6316ad62fafe56ff0776ce7718e9b293f61349 (diff) | |
download | flup-6f8f99d9f8724c7536216eb095a0ca1f0e6f3633.tar.gz |
Improve Windows compatibility by conditionally installing
SIGHUP handler.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | flup/server/preforkserver.py | 18 | ||||
-rw-r--r-- | flup/server/threadedserver.py | 16 |
3 files changed, 28 insertions, 12 deletions
@@ -1,3 +1,9 @@ +2006-01-05 Allan Saddi <asaddi@kalahari.flup.org> + + * Improve Windows compatibility by conditionally installing + SIGHUP handler. Thanks to Brad Miller for pointing out the + problem and providing a fix. + 2005-12-19 Allan Saddi <asaddi@kalahari.flup.org> * Fix socket leak in eunuchs socketpair() wrapper. Thanks to diff --git a/flup/server/preforkserver.py b/flup/server/preforkserver.py index d8c32a0..795ff20 100644 --- a/flup/server/preforkserver.py +++ b/flup/server/preforkserver.py @@ -350,13 +350,17 @@ class PreforkServer(object): pass def _installSignalHandlers(self): - """Installs signal handlers.""" - self._oldSIGs = [(x,signal.getsignal(x)) for x in - (signal.SIGHUP, signal.SIGINT, signal.SIGTERM, - signal.SIGCHLD)] - signal.signal(signal.SIGHUP, self._hupHandler) - signal.signal(signal.SIGINT, self._intHandler) - signal.signal(signal.SIGTERM, self._intHandler) + supportedSignals = [signal.SIGINT, signal.SIGTERM] + if hasattr(signal, 'SIGHUP'): + supportedSignals.append(signal.SIGHUP) + + self._oldSIGs = [(x,signal.getsignal(x)) for x in supportedSignals] + + for sig in supportedSignals: + if hasattr(signal, 'SIGHUP') and sig == signal.SIGHUP: + signal.signal(sig, self._hupHandler) + else: + signal.signal(sig, self._intHandler) def _restoreSignalHandlers(self): """Restores previous signal handlers.""" diff --git a/flup/server/threadedserver.py b/flup/server/threadedserver.py index a61db19..60c1bfa 100644 --- a/flup/server/threadedserver.py +++ b/flup/server/threadedserver.py @@ -122,11 +122,17 @@ class ThreadedServer(object): self._keepGoing = False def _installSignalHandlers(self): - self._oldSIGs = [(x,signal.getsignal(x)) for x in - (signal.SIGHUP, signal.SIGINT, signal.SIGTERM)] - signal.signal(signal.SIGHUP, self._hupHandler) - signal.signal(signal.SIGINT, self._intHandler) - signal.signal(signal.SIGTERM, self._intHandler) + supportedSignals = [signal.SIGINT, signal.SIGTERM] + if hasattr(signal, 'SIGHUP'): + supportedSignals.append(signal.SIGHUP) + + self._oldSIGs = [(x,signal.getsignal(x)) for x in supportedSignals] + + for sig in supportedSignals: + if hasattr(signal, 'SIGHUP') and sig == signal.SIGHUP: + signal.signal(sig, self._hupHandler) + else: + signal.signal(sig, self._intHandler) def _restoreSignalHandlers(self): for signum,handler in self._oldSIGs: |