diff --git a/client-py3/full/src/UDSClientLauncher.py b/client-py3/full/src/UDSClientLauncher.py index a622170aa..dc73942cd 100644 --- a/client-py3/full/src/UDSClientLauncher.py +++ b/client-py3/full/src/UDSClientLauncher.py @@ -26,6 +26,10 @@ class UdsApplication(QtWidgets.QApplication): # type: ignore 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: @@ -34,13 +38,13 @@ class UdsApplication(QtWidgets.QApplication): # type: ignore 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()) @@ -74,6 +78,6 @@ def main(args: typing.List[str]): sys.exit(app.exec()) + if __name__ == "__main__": main(args=sys.argv) - diff --git a/server/src/uds/transports/RDP/rdp_file.py b/server/src/uds/transports/RDP/rdp_file.py index a07a8051c..b106ba874 100644 --- a/server/src/uds/transports/RDP/rdp_file.py +++ b/server/src/uds/transports/RDP/rdp_file.py @@ -192,6 +192,12 @@ class RDPFile: if self.customParameters and self.customParameters.strip() != '': params += shlex.split(self.customParameters.strip()) + # On MacOSX, /rfx /gfx:rfx are almost inprescindible, as it seems the only way to get a decent performance + if self.target == OsDetector.KnownOS.Macintosh: + for i in ('/rfx', '/gfx:rfx'): + if i not in params: + params.append(i) + return params def getGeneric(self): # pylint: disable=too-many-statements