forked from espressif/esp-mqtt
Client: Fix reconnect/disconnect if auto_reconnect=off
Closes https://github.com/espressif/esp-mqtt/issues/206
This commit is contained in:
@@ -1508,13 +1508,14 @@ static void esp_mqtt_task(void *pv)
|
|||||||
break;
|
break;
|
||||||
case MQTT_STATE_WAIT_RECONNECT:
|
case MQTT_STATE_WAIT_RECONNECT:
|
||||||
|
|
||||||
if (!client->config->auto_reconnect) {
|
if (!client->config->auto_reconnect && xEventGroupGetBits(client->status_bits)&RECONNECT_BIT) {
|
||||||
client->run = false;
|
xEventGroupClearBits(client->status_bits, RECONNECT_BIT);
|
||||||
client->state = MQTT_STATE_DISCONNECTED;
|
client->state = MQTT_STATE_INIT;
|
||||||
ESP_LOGD(TAG, "MQTT client disconnected.");
|
client->wait_timeout_ms = MQTT_RECON_DEFAULT_MS;
|
||||||
|
ESP_LOGD(TAG, "Reconnecting per user request...");
|
||||||
break;
|
break;
|
||||||
}
|
} else if (client->config->auto_reconnect &&
|
||||||
if (platform_tick_get_ms() - client->reconnect_tick > client->wait_timeout_ms) {
|
platform_tick_get_ms() - client->reconnect_tick > client->wait_timeout_ms) {
|
||||||
client->state = MQTT_STATE_INIT;
|
client->state = MQTT_STATE_INIT;
|
||||||
client->reconnect_tick = platform_tick_get_ms();
|
client->reconnect_tick = platform_tick_get_ms();
|
||||||
ESP_LOGD(TAG, "Reconnecting...");
|
ESP_LOGD(TAG, "Reconnecting...");
|
||||||
|
Reference in New Issue
Block a user