From 3fc4d6d4a884ef9836969cb3c971091f92bdf549 Mon Sep 17 00:00:00 2001 From: User Date: Tue, 16 May 2023 16:44:05 +0200 Subject: [PATCH 1/3] if no bytes waiting, raise OSError --- adafruit_minimqtt/adafruit_minimqtt.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 7f96ea9d..9a0dec46 100644 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -1119,6 +1119,14 @@ def _sock_exact_recv(self, bufsize: int) -> bytearray: rc = bytearray(bufsize) mv = memoryview(rc) recv_len = self._sock.recv_into(rc, bufsize) + + if recv_len == 0: + self.logger.debug("_sock_exact_recv timeout") + # If no bytes are waiting, raise an OSError for good measure. + # Some implementations of recv_into do this on their own (like CPython), + # but we should be prepared if one doesn't (looking at you esp23spi...) + raise OSError(errno.ETIMEDOUT) + to_read = bufsize - recv_len if to_read < 0: raise MMQTTException(f"negative number of bytes to read: {to_read}") From 2ec66653fcdae02bd1926944d76935ab97a7d83d Mon Sep 17 00:00:00 2001 From: User Date: Mon, 29 May 2023 13:28:23 +0200 Subject: [PATCH 2/3] pre-commit formatting --- adafruit_minimqtt/adafruit_minimqtt.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 9a0dec46..f5c1e8b2 100644 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -1119,14 +1119,12 @@ def _sock_exact_recv(self, bufsize: int) -> bytearray: rc = bytearray(bufsize) mv = memoryview(rc) recv_len = self._sock.recv_into(rc, bufsize) - if recv_len == 0: self.logger.debug("_sock_exact_recv timeout") # If no bytes are waiting, raise an OSError for good measure. # Some implementations of recv_into do this on their own (like CPython), # but we should be prepared if one doesn't (looking at you esp23spi...) raise OSError(errno.ETIMEDOUT) - to_read = bufsize - recv_len if to_read < 0: raise MMQTTException(f"negative number of bytes to read: {to_read}") From 45bb577f483d6f3300fd8df119bd1457c78b710e Mon Sep 17 00:00:00 2001 From: User Date: Mon, 29 May 2023 13:51:58 +0200 Subject: [PATCH 3/3] second attempt at pre-commit formatting --- adafruit_minimqtt/adafruit_minimqtt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index f5c1e8b2..16113189 100644 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -1122,7 +1122,7 @@ def _sock_exact_recv(self, bufsize: int) -> bytearray: if recv_len == 0: self.logger.debug("_sock_exact_recv timeout") # If no bytes are waiting, raise an OSError for good measure. - # Some implementations of recv_into do this on their own (like CPython), + # Some implementations of recv_into do this on their own (like CPython), # but we should be prepared if one doesn't (looking at you esp23spi...) raise OSError(errno.ETIMEDOUT) to_read = bufsize - recv_len