Skip to content

Commit 42601e2

Browse files
committed
fix(websocket): prevent connection abort on write timeout
1 parent 25513d0 commit 42601e2

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

components/esp_websocket_client/esp_websocket_client.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,9 +666,15 @@ static int esp_websocket_client_send_with_exact_opcode(esp_websocket_client_hand
666666
}
667667
memcpy(client->tx_buffer, data + widx, need_write);
668668
// send with ws specific way and specific opcode
669+
errno = 0;
669670
wlen = esp_transport_ws_send_raw(client->transport, opcode, (char *)client->tx_buffer, need_write,
670671
(timeout == portMAX_DELAY) ? -1 : timeout * portTICK_PERIOD_MS);
671672
if (wlen < 0 || (wlen == 0 && need_write != 0)) {
673+
if (wlen == 0 && timeout != portMAX_DELAY && errno == 0) {
674+
ret = widx;
675+
esp_websocket_free_buf(client, true);
676+
goto unlock_and_return;
677+
}
672678
ret = wlen;
673679
esp_websocket_free_buf(client, true);
674680
esp_tls_error_handle_t error_handle = esp_transport_get_error_handle(client->transport);

0 commit comments

Comments
 (0)