Revision e0545ee9

b/lib/daemon.py
451 451
    assert isinstance(signal_handlers, dict) and \
452 452
           len(signal_handlers) > 0, \
453 453
           "Broken SignalHandled decorator"
454
    running = True
454

  
455
    # Counter for received signals
456
    shutdown_signals = 0
455 457

  
456 458
    # Start actual main loop
457
    while running:
459
    while shutdown_signals < 1:
458 460
      if not self.scheduler.empty():
459 461
        try:
460 462
          self.scheduler.run()
......
464 466
        asyncore.loop(count=1, use_poll=True)
465 467

  
466 468
      # Check whether a signal was raised
467
      for sig in signal_handlers:
468
        handler = signal_handlers[sig]
469
      for (sig, handler) in signal_handlers.items():
469 470
        if handler.called:
470 471
          self._CallSignalWaiters(sig)
471
          running = sig not in (signal.SIGTERM, signal.SIGINT)
472
          if sig in (signal.SIGTERM, signal.SIGINT):
473
            logging.info("Received signal %s asking for shutdown", sig)
474
            shutdown_signals += 1
472 475
          handler.Clear()
473 476

  
474 477
  def _CallSignalWaiters(self, signum):

Also available in: Unified diff