From 81f9442ac7ff44327e6c663cdf301e277e34bea3 Mon Sep 17 00:00:00 2001 From: goldsimon Date: Fri, 23 Oct 2009 13:17:18 +0000 Subject: [PATCH] Fixed bug #27783: Silly window avoidance for small window sizes --- CHANGELOG | 3 +++ src/core/tcp.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index b2a12a43..0c2a6a19 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -43,6 +43,9 @@ HISTORY ++ Bugfixes: + 2009-10-23: Simon Goldschmidt (David Empson) + * tcp.c: Fixed bug #27783: Silly window avoidance for small window sizes + 2009-10-22: Simon Goldschmidt * tcp_in.c: Fixed bug #26251: RST process in TIME_WAIT TCP state diff --git a/src/core/tcp.c b/src/core/tcp.c index 57b2a1a9..fffbe555 100644 --- a/src/core/tcp.c +++ b/src/core/tcp.c @@ -408,7 +408,7 @@ u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) { u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + pcb->mss)) { + if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { /* we can advertise more window */ pcb->rcv_ann_wnd = pcb->rcv_wnd; return new_right_edge - pcb->rcv_ann_right_edge;