From 0ae7a12b6b479d8a72b375507bc1f6bee35ab04c Mon Sep 17 00:00:00 2001 From: Nils <> Date: Fri, 17 Apr 2020 17:51:34 +0200 Subject: [PATCH] failsafe for session root blocking --- engine/nsmservercontrol.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/engine/nsmservercontrol.py b/engine/nsmservercontrol.py index 3f7a7d8..60c7f5e 100644 --- a/engine/nsmservercontrol.py +++ b/engine/nsmservercontrol.py @@ -566,14 +566,20 @@ class NsmServerControl(object): self._setPause(True) ready = False while not ready: - data, addr = self.sock.recvfrom(1024) - msg = _IncomingMessage(data) + try: + data, addr = self.sock.recvfrom(1024) + msg = _IncomingMessage(data) - if msg.oscpath == "/nsm/gui/session/root": - sessionRoot = msg.params[0] - ready = True - else: - self._queue.append(msg) + if msg.oscpath == "/nsm/gui/session/root": + sessionRoot = msg.params[0] + ready = True + else: + self._queue.append(msg) + + except BlockingIOError: #happens while no data is received. Has nothing to do with blocking or not. + continue + except socket.timeout: + continue logger.info(f"Session root directory is {sessionRoot}") self._setPause(False)