@@ -510,7 +510,7 @@ def connect(self, clean_session=True, host=None, port=None, keep_alive=None):
510
510
if self .logger :
511
511
self .logger .debug ("Sending CONNECT to broker..." )
512
512
self .logger .debug (
513
- "Fixed Header: %x \n Variable Header: %x " , fixed_header , var_header
513
+ "Fixed Header: %s \n Variable Header: %s " , fixed_header , var_header
514
514
)
515
515
self ._sock .send (fixed_header )
516
516
self ._sock .send (var_header )
@@ -634,7 +634,7 @@ def publish(self, topic, msg, retain=False, qos=0):
634
634
635
635
if self .logger :
636
636
self .logger .debug (
637
- "Sending PUBLISH\n Topic: %s\n Msg: %x \
637
+ "Sending PUBLISH\n Topic: %s\n Msg: %s \
638
638
\n QoS: %d\n Retain? %r" ,
639
639
topic ,
640
640
msg ,
@@ -803,8 +803,7 @@ def loop(self, timeout=1):
803
803
# Handle KeepAlive by expecting a PINGREQ/PINGRESP from the server
804
804
if self .logger is not None :
805
805
self .logger .debug (
806
- "KeepAlive period elapsed - \
807
- requesting a PINGRESP from the server..."
806
+ "KeepAlive period elapsed - requesting a PINGRESP from the server..."
808
807
)
809
808
rcs = self .ping ()
810
809
self ._timestamp = 0
@@ -826,7 +825,7 @@ def _wait_for_msg(self, timeout=0.1):
826
825
res = self ._sock_exact_recv (1 )
827
826
except OSError as error :
828
827
if error .errno == errno .ETIMEDOUT :
829
- # raised by a socket timeout in socketpool
828
+ # raised by a socket timeout if 0 bytes were present
830
829
return None
831
830
raise MMQTTException from error
832
831
@@ -837,7 +836,7 @@ def _wait_for_msg(self, timeout=0.1):
837
836
return None
838
837
if res [0 ] == MQTT_PINGRESP :
839
838
if self .logger :
840
- self .logger .debug ("Checking PINGRESP" )
839
+ self .logger .debug ("Got PINGRESP" )
841
840
sz = self ._sock_exact_recv (1 )[0 ]
842
841
if sz != 0x00 :
843
842
raise MMQTTException (
@@ -910,7 +909,15 @@ def _sock_exact_recv(self, bufsize):
910
909
else : # ESP32SPI Impl.
911
910
stamp = time .monotonic ()
912
911
read_timeout = self .keep_alive
912
+ # This will timeout with socket timeout (not keepalive timeout)
913
913
rc = self ._sock .recv (bufsize )
914
+ if not rc :
915
+ if self .logger :
916
+ self .logger .debug ("_sock_exact_recv timeout" )
917
+ # If no bytes waiting, raise same exception as socketpool
918
+ raise OSError (errno .ETIMEDOUT )
919
+ # If any bytes waiting, try to read them all,
920
+ # or raise exception if wait longer than read_timeout
914
921
to_read = bufsize - len (rc )
915
922
assert to_read >= 0
916
923
read_timeout = self .keep_alive
0 commit comments