aboutsummaryrefslogtreecommitdiff
path: root/src/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.c')
-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);
}