@@ -46,6 +46,11 @@ static const char *TAG = "WEBSOCKET_CLIENT";
46
46
action; \
47
47
}
48
48
49
+ #define ESP_WS_CLIENT_STATE_CHECK (TAG , a , action ) if ((a->state) < WEBSOCKET_STATE_INIT) { \
50
+ ESP_LOGE(TAG,"%s:%d (%s): %s", __FILE__, __LINE__, __FUNCTION__, "Websocket already stop"); \
51
+ action; \
52
+ }
53
+
49
54
const static int STOPPED_BIT = BIT0 ;
50
55
51
56
ESP_EVENT_DEFINE_BASE (WEBSOCKET_EVENTS );
@@ -134,11 +139,15 @@ static esp_err_t esp_websocket_client_dispatch_event(esp_websocket_client_handle
134
139
135
140
static esp_err_t esp_websocket_client_abort_connection (esp_websocket_client_handle_t client )
136
141
{
142
+ ESP_WS_CLIENT_STATE_CHECK (TAG , client , return ESP_FAIL );
137
143
esp_transport_close (client -> transport );
138
- client -> wait_timeout_ms = WEBSOCKET_RECONNECT_TIMEOUT_MS ;
139
- client -> reconnect_tick_ms = _tick_get_ms ();
144
+
145
+ if (client -> config -> auto_reconnect ) {
146
+ client -> wait_timeout_ms = WEBSOCKET_RECONNECT_TIMEOUT_MS ;
147
+ client -> reconnect_tick_ms = _tick_get_ms ();
148
+ ESP_LOGI (TAG , "Reconnect after %d ms" , client -> wait_timeout_ms );
149
+ }
140
150
client -> state = WEBSOCKET_STATE_WAIT_TIMEOUT ;
141
- ESP_LOGI (TAG , "Reconnect after %d ms" , client -> wait_timeout_ms );
142
151
esp_websocket_client_dispatch_event (client , WEBSOCKET_EVENT_DISCONNECTED , NULL , 0 );
143
152
return ESP_OK ;
144
153
}
@@ -469,7 +478,6 @@ static esp_err_t esp_websocket_client_recv(esp_websocket_client_handle_t client)
469
478
rlen = esp_transport_read (client -> transport , client -> rx_buffer , client -> buffer_size , client -> config -> network_timeout_ms );
470
479
if (rlen < 0 ) {
471
480
ESP_LOGE (TAG , "Error read data" );
472
- esp_websocket_client_abort_connection (client );
473
481
return ESP_FAIL ;
474
482
}
475
483
client -> payload_len = esp_transport_ws_get_read_payload_len (client -> transport );
0 commit comments