aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/async.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2009-05-06 19:20:15 +0000
committerRob Austein <sra@hactrn.net>2009-05-06 19:20:15 +0000
commitb9e9cd2c4bafdff3aa1bb4ed06afbe0a63ab701f (patch)
treed892d69f26c76e262b738dcf9072923a8e42da82 /rpkid/rpki/async.py
parent96559dfbdc2070b8ef4e582801c3bafb8f14208f (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.py8
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()."""