mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
Merge branch 'bugfix/fix_ws_handle_big_messages_v4.2' into 'release/v4.2'
esp_http_server: Fix ws server handle length over 1440(MTU) messages incorrectly(backport v4.2) See merge request espressif/esp-idf!15014
This commit is contained in:
@ -250,15 +250,19 @@ esp_err_t httpd_ws_recv_frame(httpd_req_t *req, httpd_ws_frame_t *frame, size_t
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int read_len = 0, left_len = frame->len;
|
size_t left_len = frame->len;
|
||||||
|
size_t offset = 0;
|
||||||
|
|
||||||
while (left_len > 0) {
|
while (left_len > 0) {
|
||||||
if ((read_len = httpd_recv_with_opt(req, (char *)frame->payload + read_len, left_len, false)) <= 0) {
|
int read_len = httpd_recv_with_opt(req, (char *)frame->payload + offset, left_len, false);
|
||||||
|
if (read_len <= 0) {
|
||||||
ESP_LOGW(TAG, LOG_FMT("Failed to receive payload"));
|
ESP_LOGW(TAG, LOG_FMT("Failed to receive payload"));
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
if (left_len -= read_len) {
|
offset += read_len;
|
||||||
ESP_LOGD(TAG, "recv data length is less than the data length we want. Read again!");
|
left_len -= read_len;
|
||||||
}
|
|
||||||
|
ESP_LOGD(TAG, "Frame length: %d, Bytes Read: %d", frame->len, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unmask payload */
|
/* Unmask payload */
|
||||||
|
Reference in New Issue
Block a user