From 1a94efe8b9e1b16c53eaa5c95e73e1c1337abbf5 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Sun, 20 Jun 2021 21:25:35 +0200 Subject: [PATCH] outbox: Cleanup all items when connection closes --- lib/include/mqtt_outbox.h | 1 + lib/mqtt_outbox.c | 6 +++++- mqtt_client.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/include/mqtt_outbox.h b/lib/include/mqtt_outbox.h index 21a10dd..7010e39 100644 --- a/lib/include/mqtt_outbox.h +++ b/lib/include/mqtt_outbox.h @@ -58,6 +58,7 @@ esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick int outbox_get_size(outbox_handle_t outbox); esp_err_t outbox_cleanup(outbox_handle_t outbox, int max_size); void outbox_destroy(outbox_handle_t outbox); +void outbox_delete_all_items(outbox_handle_t outbox); #ifdef __cplusplus } diff --git a/lib/mqtt_outbox.c b/lib/mqtt_outbox.c index 77ef3ec..e6fc12b 100644 --- a/lib/mqtt_outbox.c +++ b/lib/mqtt_outbox.c @@ -224,7 +224,7 @@ esp_err_t outbox_cleanup(outbox_handle_t outbox, int max_size) return ESP_OK; } -void outbox_destroy(outbox_handle_t outbox) +void outbox_delete_all_items(outbox_handle_t outbox) { outbox_item_handle_t item, tmp; STAILQ_FOREACH_SAFE(item, outbox, next, tmp) { @@ -232,6 +232,10 @@ void outbox_destroy(outbox_handle_t outbox) free(item->buffer); free(item); } +} +void outbox_destroy(outbox_handle_t outbox) +{ + outbox_delete_all_items(outbox); free(outbox); } diff --git a/mqtt_client.c b/mqtt_client.c index a71b1fb..4ec8f14 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -1494,6 +1494,7 @@ static void esp_mqtt_task(void *pv) } esp_transport_close(client->transport); + outbox_delete_all_items(client->outbox); xEventGroupSetBits(client->status_bits, STOPPED_BIT); vTaskDelete(NULL);