diff options
author | Rob Austein <sra@hactrn.net> | 2009-05-06 19:20:15 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2009-05-06 19:20:15 +0000 |
commit | b9e9cd2c4bafdff3aa1bb4ed06afbe0a63ab701f (patch) | |
tree | d892d69f26c76e262b738dcf9072923a8e42da82 /rpkid/rpki/async.py | |
parent | 96559dfbdc2070b8ef4e582801c3bafb8f14208f (diff) |
Clean up signal handling
svn path=/rpkid/rpki/async.py; revision=2407
Diffstat (limited to 'rpkid/rpki/async.py')
-rw-r--r-- | rpkid/rpki/async.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/rpkid/rpki/async.py b/rpkid/rpki/async.py index 5b7cfa48..c81bb474 100644 --- a/rpkid/rpki/async.py +++ b/rpkid/rpki/async.py @@ -190,16 +190,18 @@ def _raiseExitNow(signum, frame): def event_loop(catch_signals = (signal.SIGINT, signal.SIGTERM)): """Replacement for asyncore.loop(), adding timer and signal support.""" + old_signal_handlers = {} try: - old_signal_handlers = tuple((sig, signal.signal(sig, _raiseExitNow)) for sig in catch_signals) + for sig in catch_signals: + old_signal_handlers[sig] = signal.signal(sig, _raiseExitNow) while asyncore.socket_map or timer.queue: asyncore.poll(timer.seconds_until_wakeup(), asyncore.socket_map) timer.runq() except asyncore.ExitNow: pass finally: - for sig, handler in old_signal_handlers: - signal.signal(sig, handler) + for sig in old_signal_handlers: + signal.signal(sig, old_signal_handlers[sig]) def exit_event_loop(): """Force exit from event_loop().""" |