From 3f05b1aedc4da048d3a41657339e77dfc0bfe0a8 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Sun, 3 Oct 2021 09:05:49 +0200 Subject: [PATCH] Client: Fix reconnect/disconnect if auto_reconnect=off Closes https://github.com/espressif/esp-mqtt/issues/206 --- mqtt_client.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mqtt_client.c b/mqtt_client.c index 477ac7f..6f8a4ef 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -1508,13 +1508,14 @@ static void esp_mqtt_task(void *pv) break; case MQTT_STATE_WAIT_RECONNECT: - if (!client->config->auto_reconnect) { - client->run = false; - client->state = MQTT_STATE_DISCONNECTED; - ESP_LOGD(TAG, "MQTT client disconnected."); + if (!client->config->auto_reconnect && xEventGroupGetBits(client->status_bits)&RECONNECT_BIT) { + xEventGroupClearBits(client->status_bits, RECONNECT_BIT); + client->state = MQTT_STATE_INIT; + client->wait_timeout_ms = MQTT_RECON_DEFAULT_MS; + ESP_LOGD(TAG, "Reconnecting per user request..."); break; - } - if (platform_tick_get_ms() - client->reconnect_tick > client->wait_timeout_ms) { + } else if (client->config->auto_reconnect && + platform_tick_get_ms() - client->reconnect_tick > client->wait_timeout_ms) { client->state = MQTT_STATE_INIT; client->reconnect_tick = platform_tick_get_ms(); ESP_LOGD(TAG, "Reconnecting...");