From 08f9d025a7df115ed4e29ded797b5555937b679e Mon Sep 17 00:00:00 2001 From: ATATC Date: Tue, 16 Jul 2024 16:56:20 +0800 Subject: [PATCH] Bug fixed: connections may close without disconnections. (#297) --- leads/comm/prototype.py | 8 +++++--- leads_comm_serial/connection.py | 3 +-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/leads/comm/prototype.py b/leads/comm/prototype.py index 8c749015..8a8c1b6a 100644 --- a/leads/comm/prototype.py +++ b/leads/comm/prototype.py @@ -162,7 +162,10 @@ def disconnect(self) -> None: """ Request disconnection. """ - self.send(b"disconnect") + try: + self.send(b"disconnect") + except IOError: + return @_abstractmethod def close(self) -> None: @@ -229,14 +232,13 @@ def send(self, msg: bytes) -> None: :param msg: the message to send """ self._require_open_socket().send(msg + self._separator) - if msg == b"disconnect": - self.close() @_override def close(self) -> None: """ Close the connection. """ + self.disconnect() self._on_close(self) self._require_open_socket(False).close() diff --git a/leads_comm_serial/connection.py b/leads_comm_serial/connection.py index 49c05a1a..0c495b93 100644 --- a/leads_comm_serial/connection.py +++ b/leads_comm_serial/connection.py @@ -40,9 +40,8 @@ def receive(self, chunk_size: int = 1) -> bytes | None: @_override def send(self, msg: bytes) -> None: self._require_open_serial().write(msg + self._separator) - if msg == b"disconnect": - self.close() @_override def close(self) -> None: + self.disconnect() self._require_open_serial(False).close()