Skip to content

Commit

Permalink
Merge pull request #227 from brentru/fix-msg-i2c-decode-err
Browse files Browse the repository at this point in the history
Fix how subscription packet length is calculated
  • Loading branch information
brentru authored Aug 31, 2023
2 parents c84b63f + 4ba2fee commit a022705
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
7 changes: 5 additions & 2 deletions Adafruit_MQTT.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -563,9 +563,12 @@ Adafruit_MQTT_Subscribe *Adafruit_MQTT::handleSubscriptionPacket(uint16_t len) {
}

// Parse out length of packet.
uint16_t const topicoffset = packetAdditionalLen(len);
// NOTE: This includes data in the variable header and the payload.
uint16_t remainingLen = len - 4; // subtract the 4 header bytes
uint16_t const topicoffset = packetAdditionalLen(remainingLen);
uint16_t const topicstart = topicoffset + 4;
topiclen = buffer[3 + topicoffset];

topiclen = int((buffer[2 + topicoffset]) << 8 | buffer[3 + topicoffset]);
DEBUG_PRINT(F("Looking for subscription len "));
DEBUG_PRINTLN(topiclen);

Expand Down
9 changes: 8 additions & 1 deletion Adafruit_MQTT.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,14 @@
// Largest full packet we're able to send.
// Need to be able to store at least ~90 chars for a connect packet with full
// 23 char client ID.
// Future TODO: This should be replaced by the ability to dynamically allocate a
// buffer as needed.
#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) || \
defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_SAMD)
#define MAXBUFFERSIZE (512)
#else
#define MAXBUFFERSIZE (150)
#endif

#define MQTT_CONN_USERNAMEFLAG 0x80
#define MQTT_CONN_PASSWORDFLAG 0x40
Expand All @@ -124,7 +131,7 @@
#define SUBSCRIPTIONDATALEN 20
#else
#define MAXSUBSCRIPTIONS 15
#define SUBSCRIPTIONDATALEN 100
#define SUBSCRIPTIONDATALEN MAXBUFFERSIZE
#endif

class AdafruitIO_MQTT; // forward decl
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=Adafruit MQTT Library
version=2.5.7
version=2.5.8
author=Adafruit
maintainer=Adafruit <[email protected]>
sentence=MQTT library that supports the FONA, ESP8266, ESP32, Yun, and generic Arduino Client hardware.
Expand Down

0 comments on commit a022705

Please sign in to comment.