Adafruit_MQTT_Library icon indicating copy to clipboard operation
Adafruit_MQTT_Library copied to clipboard

connectPacket: send a second length-byte if payload is larger than >127 Byte

Open fipwmaqzufheoxq92ebc opened this issue 3 years ago • 0 comments

The connectPacket-method of Adafruit_MQTT uses only one byte for the remaining-length-field of the CONNECT-Packet. If the Packet is greater than 127 Byte, an invalid packet is sent, as the highest bit is set, but no additional length-byte is added. This PR adds code which checks the length and adds one byte if necessary. The MQTT-Protocol allows up to 4 bytes for the length-field, but as the buffer is currently limited to 150 Byte, I only use up to 2 Bytes. I tested the code on an ESP8266, but it should work for other platforms too.

I had the same issue like #108. topic/message of last-will are send in the CONNECT-Packet, which caused the Packet to be larger than 127 Byte, and triggered the bug.

fipwmaqzufheoxq92ebc avatar Mar 30 '21 18:03 fipwmaqzufheoxq92ebc