aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrwa/support/sessionservice/service.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/rwa/support/sessionservice/service.py b/rwa/support/sessionservice/service.py
index 3e9900d..6988beb 100755
--- a/rwa/support/sessionservice/service.py
+++ b/rwa/support/sessionservice/service.py
@@ -251,11 +251,16 @@ class RWASupportSessionService(dbus.service.Object):
return False
def _stop_all(self):
- """Stop all sessions and this daemon."""
- logging.info("Stop all sessions and exit service.")
+ """Stop all sessions"""
+ logging.info("Stop all sessions.")
for session in list(self.sessions.values()):
session.stop()
del self.sessions[session.pid]
+
+ def _stop_daemon(self):
+ """Stop all sessions and this daemon."""
+ logging.info("Shut down session service.")
+ self._stop_all()
self.trigger_service.shutdown()
self.loop.quit()
@@ -317,11 +322,16 @@ def main(mockup, once):
loop = GLib.MainLoop()
service_object = RWASupportSessionService(loop, mockup, once)
- def signal_handler(sig, frame):
+ def sigint_handler(sig, frame):
logging.info("Service was terminated.")
+ service_object._stop_daemon()
+
+ def sigquit_handler(sig, frame):
+ logging.info("Session was terminated.")
service_object._stop_all()
- signal.signal(signal.SIGINT, signal_handler)
+ signal.signal(signal.SIGINT, sigint_handler)
+ signal.signal(signal.SIGQUIT, sigquit_handler)
loop.run()