Skip to content

Commit a353702

Browse files
authored
Merge pull request #626 from euripedesrocha/websocket/fix_race_aborting_connection
Fix race condition when client set to not reconnect
2 parents fbd296f + 0d8f2a6 commit a353702

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
@@ -229,13 +229,15 @@ static esp_err_t esp_websocket_client_abort_connection(esp_websocket_client_hand
229229
ESP_WS_CLIENT_STATE_CHECK(TAG, client, return ESP_FAIL);
230230
esp_transport_close(client->transport);
231231

232-
if (client->config->auto_reconnect) {
232+
if (!client->config->auto_reconnect) {
233+
client->run = false;
234+
client->state = WEBSOCKET_STATE_UNKNOW;
235+
} else {
233236
client->reconnect_tick_ms = _tick_get_ms();
234237
ESP_LOGI(TAG, "Reconnect after %d ms", client->wait_timeout_ms);
238+
client->error_handle.error_type = error_type;
239+
client->state = WEBSOCKET_STATE_WAIT_TIMEOUT;
235240
}
236-
237-
client->error_handle.error_type = error_type;
238-
client->state = WEBSOCKET_STATE_WAIT_TIMEOUT;
239241
esp_websocket_client_dispatch_event(client, WEBSOCKET_EVENT_DISCONNECTED, NULL, 0);
240242
return ESP_OK;
241243
}
@@ -1051,10 +1053,6 @@ static void esp_websocket_client_task(void *pv)
10511053
break;
10521054
case WEBSOCKET_STATE_WAIT_TIMEOUT:
10531055

1054-
if (!client->config->auto_reconnect) {
1055-
client->run = false;
1056-
break;
1057-
}
10581056
if (_tick_get_ms() - client->reconnect_tick_ms > client->wait_timeout_ms) {
10591057
client->state = WEBSOCKET_STATE_INIT;
10601058
client->reconnect_tick_ms = _tick_get_ms();

0 commit comments

Comments
 (0)