aboutsummaryrefslogtreecommitdiff
path: root/src/deserialize.c
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-02-19 16:03:56 +0200
committerOskari Timperi <oskari.timperi@iki.fi>2017-02-19 16:03:56 +0200
commit8198f6d6beb3c8af3768236070089112c094b92e (patch)
tree7dcddfde2133850077ec8dc34bc9264fcb4e469a /src/deserialize.c
parente6e625ed6c1300e382a36b9ebef48336a55550e9 (diff)
downloadmqtt-8198f6d6beb3c8af3768236070089112c094b92e.tar.gz
mqtt-8198f6d6beb3c8af3768236070089112c094b92e.zip
Add MqttClientSubscribeMany() and make necessary API changes
Diffstat (limited to 'src/deserialize.c')
-rw-r--r--src/deserialize.c17
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;
}