Skip to content

Commit 0d8f2a6

Browse files
fix(websocket): Move client to different state when disconnecting
If Websocket client is set to not reconnect, we move to Unknown state to clean up the task after dispatching disconnected event.
1 parent 7e5ac87 commit 0d8f2a6

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

components/esp_websocket_client/esp_websocket_client.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,13 +227,15 @@ static esp_err_t esp_websocket_client_abort_connection(esp_websocket_client_hand
227227
ESP_WS_CLIENT_STATE_CHECK(TAG, client, return ESP_FAIL);
228228
esp_transport_close(client->transport);
229229

230-
if (client->config->auto_reconnect) {
230+
if (!client->config->auto_reconnect) {
231+
client->run = false;
232+
client->state = WEBSOCKET_STATE_UNKNOW;
233+
} else {
231234
client->reconnect_tick_ms = _tick_get_ms();
232235
ESP_LOGI(TAG, "Reconnect after %d ms", client->wait_timeout_ms);
236+
client->error_handle.error_type = error_type;
237+
client->state = WEBSOCKET_STATE_WAIT_TIMEOUT;
233238
}
234-
235-
client->error_handle.error_type = error_type;
236-
client->state = WEBSOCKET_STATE_WAIT_TIMEOUT;
237239
esp_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_DISCONNECTED, NULL, 0);
238240
return ESP_OK;
239241
}
@@ -1048,10 +1050,6 @@ static void esp_websocket_client_task(void *pv)
10481050
break;
10491051
case WEBSOCKET_STATE_WAIT_TIMEOUT:
10501052

1051-
if (!client->config->auto_reconnect) {
1052-
client->run = false;
1053-
break;
1054-
}
10551053
if (_tick_get_ms() - client->reconnect_tick_ms > client->wait_timeout_ms) {
10561054
client->state = WEBSOCKET_STATE_INIT;
10571055
client->reconnect_tick_ms = _tick_get_ms();

0 commit comments

Comments
 (0)