svn commit: r220678 - stable/7/sys/netinet

John Baldwin jhb at
Fri Apr 15 20:42:15 UTC 2011

Author: jhb
Date: Fri Apr 15 20:42:14 2011
New Revision: 220678

  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.

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
 				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