From 369a61ec593265b49ba91037254d7dcfec7436b3 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Sun, 19 Jul 2020 19:42:18 +0200 Subject: [PATCH] shut down pipes correctly, refs #146 --- owrx/websocket.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/owrx/websocket.py b/owrx/websocket.py index de34141..4908e72 100644 --- a/owrx/websocket.py +++ b/owrx/websocket.py @@ -146,6 +146,9 @@ class WebSocketConnection(object): self.close() def interrupt(self): + if self.interruptPipeSend is None: + logger.debug("interrupt with closed pipe") + return self.interruptPipeSend.send(bytes(0x00)) def handle(self): @@ -227,6 +230,18 @@ class WebSocketConnection(object): logger.exception("OSError while reading data; closing connection") self.open = False + self.interruptPipeSend.close() + self.interruptPipeSend = None + # drain messages left in the queue so that the queue can be successfully closed + # this is necessary since python keeps the file descriptors open otherwise + try: + while True: + self.interruptPipeRecv.recv() + except EOFError: + pass + self.interruptPipeRecv.close() + self.interruptPipeRecv = None + def close(self): self.open = False self.interrupt()