svn commit: r220678 - stable/7/sys/netinet
John Baldwin
jhb at FreeBSD.org
Fri Apr 15 20:42:15 UTC 2011
Author: jhb
Date: Fri Apr 15 20:42:14 2011
New Revision: 220678
URL: http://svn.freebsd.org/changeset/base/220678
Log:
MFC 220156:
Clamp the initial advertised receive window when responding to a SYN/ACK
to the maximum allowed window. Growing the window too large would cause
an underflow in the calculations in tcp_output() to decide if a window
update should be sent which would prevent the persist timer from being
started if data was pending and the other end of the connection advertised
an initial window size of 0.
Modified:
stable/7/sys/netinet/tcp_input.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/netinet/tcp_input.c
==============================================================================
--- stable/7/sys/netinet/tcp_input.c Fri Apr 15 20:40:49 2011 (r220677)
+++ stable/7/sys/netinet/tcp_input.c Fri Apr 15 20:42:14 2011 (r220678)
@@ -1296,7 +1296,8 @@ tcp_do_segment(struct mbuf *m, struct tc
(TF_RCVD_SCALE|TF_REQ_SCALE)) {
tp->rcv_scale = tp->request_r_scale;
}
- tp->rcv_adv += tp->rcv_wnd;
+ tp->rcv_adv += imin(tp->rcv_wnd,
+ TCP_MAXWIN << tp->rcv_scale);
tp->snd_una++; /* SYN is acked */
/*
* If there's data, delay ACK; if there's also a FIN
More information about the svn-src-stable-7
mailing list