From 5f3f26e8002b2f70c4284f39ecff244df6ef55ad Mon Sep 17 00:00:00 2001 From: Skyslycer Date: Thu, 12 Sep 2024 00:07:13 +0200 Subject: [PATCH] fix: don't allow invalid window size when window scale is disabled --- src/AsyncTCP.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/AsyncTCP.cpp b/src/AsyncTCP.cpp index ee0afcfd..ed69964e 100644 --- a/src/AsyncTCP.cpp +++ b/src/AsyncTCP.cpp @@ -417,7 +417,8 @@ static esp_err_t _tcp_write(tcp_pcb * pcb, int8_t closed_slot, const char* data, static err_t _tcp_recved_api(struct tcpip_api_call_data *api_call_msg){ tcp_api_call_t * msg = (tcp_api_call_t *)api_call_msg; msg->err = ERR_CONN; - if(msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) { + u32_t new_rcv_ann_wnd = msg->pcb->rcv_ann_right_edge - msg->pcb->rcv_nxt; + if((msg->closed_slot == -1 || !_closed_slots[msg->closed_slot]) && (new_rcv_ann_wnd <= 0xffff || LWIP_WND_SCALE)) { msg->err = 0; tcp_recved(msg->pcb, msg->received); }