Remove extra tracking of prev_handlers.

This commit is contained in:
Blake Griffith 2016-07-07 20:07:13 -05:00
parent e28560514a
commit 4b4a02a7af

View file

@ -77,8 +77,8 @@ class ErrorHandler(object):
self._call_registered()
return retval
finally:
prev_handlers = self._reset_signal_handlers()
self._call_signals(prev_handlers)
self._reset_signal_handlers()
self._call_signals()
def register(self, func, *args, **kwargs):
"""Sets func to be called with *args and **kwargs during cleanup
@ -112,9 +112,7 @@ class ErrorHandler(object):
"""Resets signal handlers for signals in _SIGNALS."""
for signum in self.prev_handlers:
signal.signal(signum, self.prev_handlers[signum])
out = dict((k, v) for k, v in self.prev_handlers.items())
self.prev_handlers.clear()
return out
def _signal_handler(self, signum, unused_frame):
"""Replacement function for handling recieved signals.
@ -129,13 +127,8 @@ class ErrorHandler(object):
if not self.body_executed:
raise errors.SignalExit
def _call_signals(self, prev_handlers):
"""Finally call the deferred signals.
:param int signum: signal number
"""
def _call_signals(self):
"""Finally call the deferred signals."""
for signum in self.received_signals:
logger.debug("Calling signal %s", signum)
signal.signal(signum, prev_handlers[signum])
os.kill(os.getpid(), signum)