forked from espressif/esp-protocols
Merge pull request #704 from bryghtlabs-richard/fix/websocketWriterLag
fix(websocket): release client-lock during WEBSOCKET_EVENT_DATA (IDFGH-14545)
This commit is contained in:
@ -1071,12 +1071,6 @@ static void esp_websocket_client_task(void *pv)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
client->ping_tick_ms = _tick_get_ms();
|
client->ping_tick_ms = _tick_get_ms();
|
||||||
|
|
||||||
if (esp_websocket_client_recv(client) == ESP_FAIL) {
|
|
||||||
ESP_LOGE(TAG, "Error receive data");
|
|
||||||
esp_websocket_client_abort_connection(client, WEBSOCKET_ERROR_TYPE_TCP_TRANSPORT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case WEBSOCKET_STATE_WAIT_TIMEOUT:
|
case WEBSOCKET_STATE_WAIT_TIMEOUT:
|
||||||
|
|
||||||
@ -1113,6 +1107,13 @@ static void esp_websocket_client_task(void *pv)
|
|||||||
xSemaphoreTakeRecursive(client->lock, lock_timeout);
|
xSemaphoreTakeRecursive(client->lock, lock_timeout);
|
||||||
esp_websocket_client_abort_connection(client, WEBSOCKET_ERROR_TYPE_TCP_TRANSPORT);
|
esp_websocket_client_abort_connection(client, WEBSOCKET_ERROR_TYPE_TCP_TRANSPORT);
|
||||||
xSemaphoreGiveRecursive(client->lock);
|
xSemaphoreGiveRecursive(client->lock);
|
||||||
|
} else if (read_select > 0) {
|
||||||
|
if (esp_websocket_client_recv(client) == ESP_FAIL) {
|
||||||
|
ESP_LOGE(TAG, "Error receive data");
|
||||||
|
xSemaphoreTakeRecursive(client->lock, lock_timeout);
|
||||||
|
esp_websocket_client_abort_connection(client, WEBSOCKET_ERROR_TYPE_TCP_TRANSPORT);
|
||||||
|
xSemaphoreGiveRecursive(client->lock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (WEBSOCKET_STATE_WAIT_TIMEOUT == client->state) {
|
} else if (WEBSOCKET_STATE_WAIT_TIMEOUT == client->state) {
|
||||||
// waiting for reconnecting...
|
// waiting for reconnecting...
|
||||||
|
Reference in New Issue
Block a user