diff --git a/src/core/tcp.c b/src/core/tcp.c index 62a4f49a..4ab619da 100644 --- a/src/core/tcp.c +++ b/src/core/tcp.c @@ -442,9 +442,10 @@ tcp_listen(struct tcp_pcb *pcb) void tcp_recved(struct tcp_pcb *pcb, u16_t len) { - pcb->rcv_wnd += len; - if (pcb->rcv_wnd > TCP_WND) { + if ((u32_t)pcb->rcv_wnd + len > TCP_WND) { pcb->rcv_wnd = TCP_WND; + } else { + pcb->rcv_wnd += len; } if (!(pcb->flags & TF_ACK_DELAY) && !(pcb->flags & TF_ACK_NOW)) {