Signed-off-by: Guido Trotter <ultrot...@google.com>
---
 daemons/ganeti-masterd |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/daemons/ganeti-masterd b/daemons/ganeti-masterd
index 57fa9ec..d2da39e 100755
--- a/daemons/ganeti-masterd
+++ b/daemons/ganeti-masterd
@@ -108,14 +108,17 @@ class IOServer(SocketServer.UnixStreamServer):
     """
     self.request_workers.AddTask(self, request, client_address)
 
-  def serve_forever(self):
+  @utils.SignalHandled([signal.SIGINT, signal.SIGTERM])
+  def serve_forever(self, signal_handlers=None):
     """Handle one request at a time until told to quit."""
-    sighandler = utils.SignalHandler([signal.SIGINT, signal.SIGTERM])
-    try:
-      while not sighandler.called:
-        self.handle_request()
-    finally:
-      sighandler.Reset()
+    assert isinstance(signal_handlers, dict) and \
+           len(signal_handlers) > 0, \
+           "Broken SignalHandled decorator"
+    # Since we use SignalHandled only once, the resulting dict will map all
+    # signals to the same handler. We'll just use the first one.
+    sighandler = signal_handlers.values()[0]
+    while not sighandler.called:
+      self.handle_request()
 
   def server_cleanup(self):
     """Cleanup the server.
-- 
1.5.6.5

Reply via email to