From 4f76558624447768bc57f8fa32212e1846b54638 Mon Sep 17 00:00:00 2001 From: Dan Lizotte Date: Fri, 2 Apr 2021 18:09:40 -0400 Subject: [PATCH 1/3] MQTT with QOS 1 or 2 forbids a packet ID of 0. --- Adafruit_MQTT.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 7d5141b..3b66bb9 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -116,7 +116,7 @@ Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port, const char *cid, will_qos = 0; will_retain = 0; - packet_id_counter = 0; + packet_id_counter = 1; // MQTT spec forbids packet id of 0 if QOS=1 } Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port, @@ -137,7 +137,7 @@ Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port, will_qos = 0; will_retain = 0; - packet_id_counter = 0; + packet_id_counter = 1; // MQTT spec forbids packet id of 0 if QOS=1 } int8_t Adafruit_MQTT::connect() { @@ -342,7 +342,7 @@ bool Adafruit_MQTT::publish(const char *topic, uint8_t *data, uint16_t bLen, // we increment the packet_id_counter right after publishing so inc here too // to match - packnum++; + packnum = packnum + 1 + (packnum + 1 == 0); //Skip zero if (packnum != packet_id_counter) return false; } @@ -709,8 +709,8 @@ uint16_t Adafruit_MQTT::publishPacket(uint8_t *packet, const char *topic, p[1] = packet_id_counter & 0xFF; p += 2; - // increment the packet id - packet_id_counter++; + // increment the packet id, skipping 0 + packet_id_counter = packet_id_counter + 1 + (packet_id_counter + 1 == 0); } memmove(p, data, bLen); @@ -735,8 +735,8 @@ uint8_t Adafruit_MQTT::subscribePacket(uint8_t *packet, const char *topic, p[1] = packet_id_counter & 0xFF; p += 2; - // increment the packet id - packet_id_counter++; + // increment the packet id, skipping 0 + packet_id_counter = packet_id_counter + 1 + (packet_id_counter + 1 == 0); p = stringprint(p, topic); @@ -764,8 +764,8 @@ uint8_t Adafruit_MQTT::unsubscribePacket(uint8_t *packet, const char *topic) { p[1] = packet_id_counter & 0xFF; p += 2; - // increment the packet id - packet_id_counter++; + // increment the packet id, skipping 0 + packet_id_counter = packet_id_counter + 1 + (packet_id_counter + 1 == 0); p = stringprint(p, topic); From 7b2061ad85e9ba322048fb53a5e30324bd88334f Mon Sep 17 00:00:00 2001 From: dlizotte-uwo Date: Sun, 4 Apr 2021 17:07:59 -0400 Subject: [PATCH 2/3] Missing space after // comment --- Adafruit_MQTT.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 3b66bb9..06907d5 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -342,7 +342,7 @@ bool Adafruit_MQTT::publish(const char *topic, uint8_t *data, uint16_t bLen, // we increment the packet_id_counter right after publishing so inc here too // to match - packnum = packnum + 1 + (packnum + 1 == 0); //Skip zero + packnum = packnum + 1 + (packnum + 1 == 0); // Skip zero if (packnum != packet_id_counter) return false; } From f4685f4eead4b7ff06895307eebf3d8b4e00b3ee Mon Sep 17 00:00:00 2001 From: dlizotte-uwo Date: Wed, 5 Jul 2023 18:07:22 -0400 Subject: [PATCH 3/3] Fix Adafruit_MQTT.cpp formatting --- Adafruit_MQTT.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Adafruit_MQTT.cpp b/Adafruit_MQTT.cpp index 08fc6ba..0545a56 100644 --- a/Adafruit_MQTT.cpp +++ b/Adafruit_MQTT.cpp @@ -156,7 +156,6 @@ Adafruit_MQTT::Adafruit_MQTT(const char *server, uint16_t port, packet_id_counter = 1; // MQTT spec forbids packet id of 0 if QOS=1 keepAliveInterval = MQTT_CONN_KEEPALIVE; - } int8_t Adafruit_MQTT::connect() {