@@ -438,6 +438,7 @@ def connect(
438
438
self .logger .warning (f"Socket error when connecting: { e } " )
439
439
backoff = False
440
440
except MMQTTException as e :
441
+ self ._close_socket ()
441
442
self .logger .info (f"MMQT error: { e } " )
442
443
if e .code in [
443
444
CONNACK_ERROR_INCORECT_USERNAME_PASSWORD ,
@@ -452,9 +453,9 @@ def connect(
452
453
exc_msg = "Repeated connect failures"
453
454
else :
454
455
exc_msg = "Connect failure"
456
+
455
457
if last_exception :
456
458
raise MMQTTException (exc_msg ) from last_exception
457
-
458
459
raise MMQTTException (exc_msg )
459
460
460
461
# pylint: disable=too-many-branches, too-many-statements, too-many-locals
@@ -565,6 +566,12 @@ def _connect(
565
566
f"No data received from broker for { self ._recv_timeout } seconds."
566
567
)
567
568
569
+ def _close_socket (self ):
570
+ if self ._sock :
571
+ self .logger .debug ("Closing socket" )
572
+ self ._connection_manager .close_socket (self ._sock )
573
+ self ._sock = None
574
+
568
575
# pylint: disable=no-self-use
569
576
def _encode_remaining_length (
570
577
self , fixed_header : bytearray , remaining_length : int
@@ -593,8 +600,7 @@ def disconnect(self) -> None:
593
600
self ._sock .send (MQTT_DISCONNECT )
594
601
except RuntimeError as e :
595
602
self .logger .warning (f"Unable to send DISCONNECT packet: { e } " )
596
- self .logger .debug ("Closing socket" )
597
- self ._connection_manager .close_socket (self ._sock )
603
+ self ._close_socket ()
598
604
self ._is_connected = False
599
605
self ._subscribed_topics = []
600
606
self ._last_msg_sent_timestamp = 0
0 commit comments