From 9115992db53079ed8d6b37e2a0cd714fde98c789 Mon Sep 17 00:00:00 2001 From: Oskari Timperi Date: Tue, 14 Feb 2017 23:20:14 +0200 Subject: Free packets from outMessages and inMessages when freeing client --- src/client.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') 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); } -- cgit v1.2.3