esp_http_server: Fix ws server handle length over 1440(MTU) messages incorrectly.

Closes https://github.com/espressif/esp-idf/issues/7202
pull/7307/head
yuanjm 2021-07-02 10:49:31 +08:00
rodzic 2a747b7bb1
commit f2a0b48cf9
1 zmienionych plików z 9 dodań i 3 usunięć

Wyświetl plik

@ -328,9 +328,15 @@ esp_err_t httpd_ws_recv_frame(httpd_req_t *req, httpd_ws_frame_t *frame, size_t
return ESP_FAIL;
}
if (httpd_recv_with_opt(req, (char *)frame->payload, frame->len, false) <= 0) {
ESP_LOGW(TAG, LOG_FMT("Failed to receive payload"));
return ESP_FAIL;
int read_len = 0, left_len = frame->len;
while (left_len > 0) {
if ((read_len = httpd_recv_with_opt(req, (char *)frame->payload + read_len, left_len, false)) <= 0) {
ESP_LOGW(TAG, LOG_FMT("Failed to receive payload"));
return ESP_FAIL;
}
if (left_len -= read_len) {
ESP_LOGD(TAG, "recv data length is less than the data length we want. Read again!");
}
}
/* Unmask payload */