Skip to content

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

Open
fipwmaqzufheoxq92ebc wants to merge 2 commits intoadafruit:masterfrom
fipwmaqzufheoxq92ebc:handle-large-connect-packet
Open

connectPacket: send a second length-byte if payload is larger than >127 Byte#189
fipwmaqzufheoxq92ebc wants to merge 2 commits intoadafruit:masterfrom
fipwmaqzufheoxq92ebc:handle-large-connect-packet

Conversation

@fipwmaqzufheoxq92ebc
Copy link
Copy Markdown

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant