diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 56673aad..2222bd08 100644 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -258,6 +258,7 @@ def _get_connect_socket(self, host, port, *, timeout=1): sock = None retry_count = 0 + last_exception = None while retry_count < 5 and sock is None: retry_count += 1 @@ -274,14 +275,19 @@ def _get_connect_socket(self, host, port, *, timeout=1): try: sock.connect((connect_host, port)) - except MemoryError: + except MemoryError as exc: sock.close() sock = None - except OSError: + last_exception = exc + except OSError as exc: sock.close() sock = None + last_exception = exc if sock is None: + if last_exception: + raise RuntimeError("Repeated socket failures") from last_exception + raise RuntimeError("Repeated socket failures") self._backwards_compatible_sock = not hasattr(sock, "recv_into")