# HG changeset patch # User Edouard Tisserant # Date 1626185818 -7200 # Node ID 2bcfbea6a2a8b66b8a24f91f94f76504dfda8614 # Parent 8e81e4ce9bc6eaf967cdf3e1ef1199720ab4be2d SVGHMI: Fixed typo on session manager unregister, leading to wrong count of sessions and then exceptions when creating more session than allowed in protocol options. Also added more safety check in protocol in case session would be missing. diff -r 8e81e4ce9bc6 -r 2bcfbea6a2a8 svghmi/svghmi_server.py --- a/svghmi/svghmi_server.py Tue Jul 13 16:13:21 2021 +0200 +++ b/svghmi/svghmi_server.py Tue Jul 13 16:16:58 2021 +0200 @@ -97,7 +97,7 @@ self.watchdog_session = None else: try: - self.multiclient_sessions.remove(self) + self.multiclient_sessions.remove(session) except KeyError: return self.free_index(session.session_index) @@ -214,19 +214,20 @@ def onOpen(self): global svghmi_session_manager assert(self._hmi_session is None) - self._hmi_session = HMISession(self) - registered = svghmi_session_manager.register(self._hmi_session) + _hmi_session = HMISession(self) + registered = svghmi_session_manager.register(_hmi_session) + self._hmi_session = _hmi_session def onClose(self, wasClean, code, reason): global svghmi_session_manager + if self._hmi_session is None : return self._hmi_session.notify_closed() svghmi_session_manager.unregister(self._hmi_session) self._hmi_session = None def onMessage(self, msg, isBinary): global svghmi_watchdog - assert(self._hmi_session is not None) - + if self._hmi_session is None : return result = self._hmi_session.onMessage(msg) if result == 1 and self.has_watchdog: # was heartbeat if svghmi_watchdog is not None: