connectPacket: send a second length-byte if payload is larger than >127 Byte #189
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.