Skip to content
Snippets Groups Projects

Prevent crashing when asking for status with invalid pid

Merged Daniel Teichmann requested to merge pr/bug-invalid-pid-dbus into master
Compare and
2 files
+ 19
8
Preferences
File browser
Compare changes
+ 17
4
@@ -47,14 +47,21 @@ class RWAService(dbus.service.Object):
self._update_session(pid)
return self._get_status(pid)
@dbus.service.method("org.ArcticaProject.RWA", in_signature="i")
@dbus.service.method("org.ArcticaProject.RWA", in_signature="i", out_signature="s")
def stop(self, pid: int):
"""Stop a remote session."""
session = self.sessions[pid]
try:
session = self.sessions[pid]
except KeyError:
return json.dumps({"pid": pid, "status": "stopped"}, sort_keys=True)
session.stop()
return json.dumps({"id": pid, "status": "stopped"}, sort_keys=True)
def _get_status(self, pid: int) -> str:
session = self.sessions[pid]
try:
session = self.sessions[pid]
except KeyError:
return json.dumps({"id": pid, "status": "dead"}, sort_keys=True)
return json.dumps(session.status)
def _ensure_update_service(self):
@@ -65,7 +72,13 @@ class RWAService(dbus.service.Object):
def _update_session(self, pid: int):
"""Update the status of a session."""
session = self.sessions[pid]
try:
session = self.sessions[pid]
except KeyError:
print(f"Session #{pid}")
print("Session is dead.")
return
print(f"Session #{session.pid}")
# Check if VNC process is still running