From f3d4f3cea66dda3bc60edd1a72ac0639b1ebc265 Mon Sep 17 00:00:00 2001 From: Benjamin Braatz Date: Wed, 11 Aug 2021 10:03:12 +0200 Subject: [PATCH] Catch BusException and unregister. --- controlpi_plugins/wsserver.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/controlpi_plugins/wsserver.py b/controlpi_plugins/wsserver.py index 0ede443..b72cb3e 100644 --- a/controlpi_plugins/wsserver.py +++ b/controlpi_plugins/wsserver.py @@ -8,7 +8,8 @@ from websockets.datastructures import Headers from websockets.exceptions import ConnectionClosed from websockets.legacy.server import serve, WebSocketServerProtocol -from controlpi import BasePlugin, MessageBus, Message, MessageTemplate +from controlpi import (BasePlugin, MessageBus, BusException, + Message, MessageTemplate) from typing import Optional, Tuple @@ -72,8 +73,15 @@ class Connection: 'connection closed'}})) for template in message['up filter']: sends.append(template) - self._bus.register(self._name, 'WSServer', sends, - message['down filter'], self._receive) + try: + self._bus.register(self._name, 'WSServer', sends, + message['down filter'], + self._receive) + except BusException: + self._bus.unregister(self._name) + self._bus.register(self._name, 'WSServer', sends, + message['down filter'], + self._receive) open_message = Message(self._name) open_message['event'] = 'connection opened' open_message['address'] = self._address -- 2.34.1