@@ -591,9 +591,9 @@ def publish(self, topic, msg, retain=False, qos=0):
591
591
if qos > 0 :
592
592
# packet identifier where QoS level is 1 or 2. [3.3.2.2]
593
593
remaining_length += 2
594
- pub_hdr_var . append ( 0x00 )
595
- pub_hdr_var .append (self ._pid )
596
- self ._pid += 1
594
+ self . _pid = self . _pid + 1 if self . _pid < 0xFFFF else 1
595
+ pub_hdr_var .append (self ._pid >> 8 )
596
+ pub_hdr_var . append ( self ._pid & 0xFF )
597
597
598
598
# Calculate remaining length [2.2.3]
599
599
if remaining_length > 0x7F :
@@ -668,7 +668,7 @@ def subscribe(self, topic, qos=0):
668
668
packet_length = 2 + (2 * len (topics )) + (1 * len (topics ))
669
669
packet_length += sum (len (topic ) for topic , qos in topics )
670
670
packet_length_byte = packet_length .to_bytes (1 , "big" )
671
- self ._pid += 1
671
+ self ._pid = self . _pid + 1 if self . _pid < 0xFFFF else 1
672
672
packet_id_bytes = self ._pid .to_bytes (2 , "big" )
673
673
# Packet with variable and fixed headers
674
674
packet = MQTT_SUB + packet_length_byte + packet_id_bytes
@@ -717,7 +717,7 @@ def unsubscribe(self, topic):
717
717
packet_length = 2 + (2 * len (topics ))
718
718
packet_length += sum (len (topic ) for topic in topics )
719
719
packet_length_byte = packet_length .to_bytes (1 , "big" )
720
- self ._pid += 1
720
+ self ._pid = self . _pid + 1 if self . _pid < 0xFFFF else 1
721
721
packet_id_bytes = self ._pid .to_bytes (2 , "big" )
722
722
packet = MQTT_UNSUB + packet_length_byte + packet_id_bytes
723
723
for t in topics :
0 commit comments