From 45a4dec18fcaf98afbd900479f143523f58024e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20G=C3=B3mez=20Garc=C3=ADa?= Date: Tue, 23 May 2023 02:25:35 +0200 Subject: [PATCH] Fix tunnel removal procedure on Mac Launcher --- client-py3/full/src/UDSClientLauncher.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client-py3/full/src/UDSClientLauncher.py b/client-py3/full/src/UDSClientLauncher.py index d27b74dc6..fc00bd1d0 100644 --- a/client-py3/full/src/UDSClientLauncher.py +++ b/client-py3/full/src/UDSClientLauncher.py @@ -11,6 +11,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui SCRIPT_NAME = 'UDSClientLauncher' + class UdsApplication(QtWidgets.QApplication): path: str tunnels: typing.List[subprocess.Popen] @@ -22,6 +23,10 @@ class UdsApplication(QtWidgets.QApplication): self.lastWindowClosed.connect(self.closeTunnels) # type: ignore def cleanTunnels(self) -> None: + ''' + Removes all finished tunnels from the list + ''' + def isRunning(p: subprocess.Popen): try: if p.poll() is None: @@ -30,13 +35,13 @@ class UdsApplication(QtWidgets.QApplication): logger.debug('Got error polling subprocess: %s', e) return False - for k in [i for i, tunnel in enumerate(self.tunnels) if not isRunning(tunnel)]: - try: - del self.tunnels[k] - except Exception as e: - logger.debug('Error closing tunnel: %s', e) + # Remove references to finished tunnels, they will be garbage collected + self.tunnels = [tunnel for tunnel in self.tunnels if isRunning(tunnel)] def closeTunnels(self) -> None: + ''' + Finishes all running tunnels + ''' logger.debug('Closing remaining tunnels') for tunnel in self.tunnels: logger.debug('Checking %s - "%s"', tunnel, tunnel.poll()) @@ -70,6 +75,6 @@ def main(args: typing.List[str]): sys.exit(app.exec()) + if __name__ == "__main__": main(args=sys.argv) -