From 057c1ebc9e4f605ac5197ba93ae1b6aa76b078d1 Mon Sep 17 00:00:00 2001 From: Junius Pun Date: Mon, 21 Jul 2025 13:27:17 +0800 Subject: [PATCH] fix: copy message ID before unlocking client --- mqtt_client.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mqtt_client.c b/mqtt_client.c index 54c8e2f..6f0158f 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -2040,8 +2040,10 @@ int esp_mqtt_client_subscribe_multiple(esp_mqtt_client_handle_t client, } ESP_LOGD(TAG, "Sent subscribe, first topic=%s, id: %d", topic_list[0].filter, client->mqtt_state.pending_msg_id); + + int pending_msg_id = client->mqtt_state.pending_msg_id; MQTT_API_UNLOCK(client); - return client->mqtt_state.pending_msg_id; + return pending_msg_id; } int esp_mqtt_client_subscribe_single(esp_mqtt_client_handle_t client, const char *topic, int qos) @@ -2096,8 +2098,10 @@ int esp_mqtt_client_unsubscribe(esp_mqtt_client_handle_t client, const char *top } ESP_LOGD(TAG, "Sent Unsubscribe topic=%s, id: %d, successful", topic, client->mqtt_state.pending_msg_id); + + int pending_msg_id = client->mqtt_state.pending_msg_id; MQTT_API_UNLOCK(client); - return client->mqtt_state.pending_msg_id; + return pending_msg_id; } static int make_publish(esp_mqtt_client_handle_t client, const char *topic, const char *data,