From 372b3235358c7a74174b681b080d0edaa059668f Mon Sep 17 00:00:00 2001 From: yuanjm Date: Tue, 21 Dec 2021 15:31:56 +0800 Subject: [PATCH] mqtt_client: Fix mqtt send long data error Closes https://github.com/espressif/esp-mqtt/issues/214 --- mqtt_client.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mqtt_client.c b/mqtt_client.c index 90569a1..c8a4d55 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -1758,16 +1758,6 @@ static inline int mqtt_client_enqueue_priv(esp_mqtt_client_handle_t client, cons int len, int qos, int retain, bool store) { uint16_t pending_msg_id = 0; - - /* Acceptable publish messages: - data == NULL, len == 0: publish null message - data valid, len == 0: publish all data, payload len is determined from string length - data valid, len > 0: publish data with defined length - */ - if (len <= 0 && data != NULL) { - len = strlen(data); - } - mqtt_message_t *publish_msg = mqtt_msg_publish(&client->mqtt_state.mqtt_connection, topic, data, len, qos, retain, @@ -1814,6 +1804,16 @@ int esp_mqtt_client_publish(esp_mqtt_client_handle_t client, const char *topic, return -1; } #endif + + /* Acceptable publish messages: + data == NULL, len == 0: publish null message + data valid, len == 0: publish all data, payload len is determined from string length + data valid, len > 0: publish data with defined length + */ + if (len <= 0 && data != NULL) { + len = strlen(data); + } + int pending_msg_id = mqtt_client_enqueue_priv(client, topic, data, len, qos, retain, false); if (pending_msg_id < 0) { MQTT_API_UNLOCK(client);