From b82c8f6c87fc0851b8d5090b327911cec041f104 Mon Sep 17 00:00:00 2001 From: Totrasmek <59108540+Totrasmek@users.noreply.github.com> Date: Thu, 7 Nov 2024 10:08:56 +1100 Subject: [PATCH 1/2] When MQTT_REPORT_DELETED_MESSAGES, delete QOS messages with id 0 --- mqtt_client.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mqtt_client.c b/mqtt_client.c index b848213..c48be54 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -1544,7 +1544,7 @@ static void mqtt_delete_expired_messages(esp_mqtt_client_handle_t client) #if MQTT_REPORT_DELETED_MESSAGES // also report the deleted items as MQTT_EVENT_DELETED events if enabled int msg_id = 0; - while ((msg_id = outbox_delete_single_expired(client->outbox, platform_tick_get_ms(), OUTBOX_EXPIRED_TIMEOUT_MS)) > 0) { + while ((msg_id = outbox_delete_single_expired(client->outbox, platform_tick_get_ms(), OUTBOX_EXPIRED_TIMEOUT_MS)) >= 0) { client->event.event_id = MQTT_EVENT_DELETED; client->event.msg_id = msg_id; if (esp_mqtt_dispatch_event(client) != ESP_OK) { From ea036a5819ebb4df684b66768ce5a4ff91443a67 Mon Sep 17 00:00:00 2001 From: Euripedes Rocha Date: Fri, 15 Nov 2024 10:38:10 +0100 Subject: [PATCH 2/2] doc: Clarify deleted message event to cover QoS=0 case Minor improvement on documentation for the event. Merges github.com/espressif/esp-mqtt/pull/290 Closes github.com/espressif/esp-mqtt/issues/289 --- include/mqtt_client.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mqtt_client.h b/include/mqtt_client.h index 8bd0ed4..5e84e5f 100644 --- a/include/mqtt_client.h +++ b/include/mqtt_client.h @@ -80,13 +80,13 @@ typedef enum esp_mqtt_event_id_t { MQTT_EVENT_BEFORE_CONNECT, /*!< The event occurs before connecting */ MQTT_EVENT_DELETED, /*!< Notification on delete of one message from the internal outbox, if the message couldn't have been sent - and acknowledged before expiring defined in + or acknowledged before expiring defined in OUTBOX_EXPIRED_TIMEOUT_MS. (events are not posted upon deletion of successfully acknowledged messages) - This event id is posted only if MQTT_REPORT_DELETED_MESSAGES==1 - Additional context: msg_id (id of the deleted - message). + message, always 0 for QoS = 0 messages). */ MQTT_USER_EVENT, /*!< Custom event used to queue tasks into mqtt event handler All fields from the esp_mqtt_event_t type could be used to pass