My Modify MQTTPacket Packet size 100 -> 400
Fork of MQTTPacket by
Diff: MQTTConnectServer.c
- Revision:
- 16:d0b3886ada32
- Parent:
- 14:c2052aee81de
- Child:
- 17:c5bd28cc139a
diff -r f0ae0b8d4418 -r d0b3886ada32 MQTTConnectServer.c --- a/MQTTConnectServer.c Fri Aug 01 16:27:19 2014 +0000 +++ b/MQTTConnectServer.c Fri Aug 01 16:58:18 2014 +0000 @@ -61,6 +61,8 @@ FUNC_ENTRY; header.byte = readChar(&curdata); + if (header.bits.type != CONNECT) + goto exit; curdata += MQTTPacket_decodeBuf(curdata, &mylen); /* read remaining length */ @@ -111,13 +113,15 @@ * @param buf the buffer into which the packet will be serialized * @param buflen the length in bytes of the supplied buffer * @param connack_rc the integer connack return code to be used + * @param sessionPresent the MQTT 3.1.1 sessionPresent flag * @return serialized length, or error if 0 */ -int MQTTSerialize_connack(unsigned char* buf, int buflen, unsigned char connack_rc) +int MQTTSerialize_connack(unsigned char* buf, int buflen, unsigned char connack_rc, unsigned char sessionPresent) { MQTTHeader header; int rc = 0; unsigned char *ptr = buf; + MQTTConnackFlags flags; FUNC_ENTRY; if (buflen < 2) @@ -131,7 +135,9 @@ ptr += MQTTPacket_encode(ptr, 2); /* write remaining length */ - writeChar(&ptr, 0); /* compression byte - not used */ + flags.all = 0; + flags.bits.sessionpresent = sessionPresent; + writeChar(&ptr, flags.all); writeChar(&ptr, connack_rc); rc = ptr - buf;