From 32dada47ff2d88f38f16a0ed2e396465a5777b5e Mon Sep 17 00:00:00 2001 From: Euripedes Rocha Date: Mon, 27 May 2024 10:51:23 +0200 Subject: [PATCH] feat: Moves deletion of expired messages to run at all states Process expiration of messages in all states removing messages from the outbox even in disconnected scenarios. Closes https://github.com/espressif/esp-mqtt/issues/278 --- mqtt_client.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mqtt_client.c b/mqtt_client.c index 2928c2a..272f5da 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -1589,6 +1589,8 @@ static void esp_mqtt_task(void *pv) while (client->run) { MQTT_API_LOCK(client); run_event_loop(client); + // delete long pending messages + mqtt_delete_expired_messages(client); mqtt_client_state_t state = client->state; switch (state) { case MQTT_STATE_DISCONNECTED: @@ -1668,8 +1670,6 @@ static void esp_mqtt_task(void *pv) last_retransmit = platform_tick_get_ms(); } - // delete long pending messages - mqtt_delete_expired_messages(client); // resend all non-transmitted messages first outbox_item_handle_t item = outbox_dequeue(client->outbox, QUEUED, NULL);