aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-02-14 23:20:14 +0200
committerOskari Timperi <oskari.timperi@iki.fi>2017-02-14 23:20:14 +0200
commit9115992db53079ed8d6b37e2a0cd714fde98c789 (patch)
tree6328eff994ce2d1a19fc7d4a19a902ab6747845e
parentb2cfc193e287a2ab4461a1da37ddcc499f1cac68 (diff)
downloadmqtt-9115992db53079ed8d6b37e2a0cd714fde98c789.tar.gz
mqtt-9115992db53079ed8d6b37e2a0cd714fde98c789.zip
Free packets from outMessages and inMessages when freeing client
-rw-r--r--src/client.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/client.c b/src/client.c
index e7739ad..9002c0d 100644
--- a/src/client.c
+++ b/src/client.c
@@ -150,10 +150,25 @@ MqttClient *MqttClientNew(const char *clientId, int cleanSession)
void MqttClientFree(MqttClient *client)
{
+ MqttPacket *packet, *next;
+
+ TAILQ_FOREACH_SAFE(packet, &client->outMessages, messages, next)
+ {
+ TAILQ_REMOVE(&client->outMessages, packet, messages);
+ MqttPacketFree(packet);
+ }
+
+ TAILQ_FOREACH_SAFE(packet, &client->inMessages, messages, next)
+ {
+ TAILQ_REMOVE(&client->inMessages, packet, messages);
+ MqttPacketFree(packet);
+ }
+
bdestroy(client->clientId);
bdestroy(client->willTopic);
bdestroy(client->willMessage);
bdestroy(client->host);
+
free(client);
}