diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2017-02-19 16:03:56 +0200 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2017-02-19 16:03:56 +0200 |
| commit | 8198f6d6beb3c8af3768236070089112c094b92e (patch) | |
| tree | 7dcddfde2133850077ec8dc34bc9264fcb4e469a /src/deserialize.c | |
| parent | e6e625ed6c1300e382a36b9ebef48336a55550e9 (diff) | |
| download | mqtt-8198f6d6beb3c8af3768236070089112c094b92e.tar.gz mqtt-8198f6d6beb3c8af3768236070089112c094b92e.zip | |
Add MqttClientSubscribeMany() and make necessary API changes
Diffstat (limited to 'src/deserialize.c')
| -rw-r--r-- | src/deserialize.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/deserialize.c b/src/deserialize.c index aaff490..96d7789 100644 --- a/src/deserialize.c +++ b/src/deserialize.c @@ -46,19 +46,24 @@ static int MqttPacketConnAckDeserialize(MqttPacketConnAck **packet, Stream *stre static int MqttPacketSubAckDeserialize(MqttPacketSubAck **packet, Stream *stream) { size_t remainingLength = 0; + size_t i; if (StreamReadRemainingLength(&remainingLength, stream) == -1) return -1; - /* 2 bytes for packet id and 1 byte for single return code */ - if (remainingLength != 3) - return -1; - if (StreamReadUint16Be(&((*packet)->base.id), stream) == -1) return -1; - if (StreamRead(&((*packet)->returnCode), 1, stream) == -1) - return -1; + remainingLength -= 2; + + (*packet)->returnCode = (unsigned char *) malloc( + sizeof(*(*packet)->returnCode) * remainingLength); + + for (i = 0; i < remainingLength; ++i) + { + if (StreamRead(&((*packet)->returnCode[i]), 1, stream) == -1) + return -1; + } return 0; } |
