diff options
author | Jonathan Weth <git@jonathanweth.de> | 2020-07-23 14:41:55 +0200 |
---|---|---|
committer | Jonathan Weth <git@jonathanweth.de> | 2020-07-23 14:41:55 +0200 |
commit | 81e570931adc37054460e3f05d0325888050e386 (patch) | |
tree | 5f76ca768d8cbf647bc232d08350f9fc3ab3911d | |
parent | da6b2bb9d46d096783e12553ba458eb6f3b13e32 (diff) | |
download | RWA.Support.SessionService-81e570931adc37054460e3f05d0325888050e386.tar.gz RWA.Support.SessionService-81e570931adc37054460e3f05d0325888050e386.tar.bz2 RWA.Support.SessionService-81e570931adc37054460e3f05d0325888050e386.zip |
Implement bi-directional stopping of sessions
-rwxr-xr-x | service.py | 2 | ||||
-rw-r--r-- | session.py | 9 |
2 files changed, 10 insertions, 1 deletions
@@ -72,6 +72,8 @@ class RWAService(dbus.service.Object): running = session.vnc_process_running if running: print("Session is running") + elif session.status_text == "stopped" and session.pid in self.sessions: + del self.sessions[session.pid] else: print("Session is dead.") @@ -152,7 +152,12 @@ class Session: r = requests.get( STATUS_URL, params={"id": self.session_id}, headers=self._api_headers ) - self.status_text = r.json()["status"] + + if r.status_code in (401, 402, 403, 404, 405): + # Session doesn't exist anymore, so stop it local + self.stop(triggered=True) + else: + self.status_text = r.json()["status"] def push(self): """Update status: Push status to Django.""" @@ -195,6 +200,8 @@ class Session: STOP_URL, params={"id": self.session_id}, headers=self._api_headers ) + self.status_text = "stopped" + # Delete self del self |