svn commit: r198990 - head/sys/netinet
John Baldwin
jhb at FreeBSD.org
Fri Nov 6 16:55:06 UTC 2009
Author: jhb
Date: Fri Nov 6 16:55:05 2009
New Revision: 198990
URL: http://svn.freebsd.org/changeset/base/198990
Log:
Several years ago a feature was added to TCP that casued soreceive() to
send an ACK right away if data was drained from a TCP socket that had
previously advertised a zero-sized window. The current code requires the
receive window to be exactly zero for this to kick in. If window scaling is
enabled and the window is smaller than the scale, then the effective window
that is advertised is zero. However, in that case the zero-sized window
handling is not enabled because the window is not exactly zero. The fix
changes the code to check the raw window value against zero.
Reviewed by: bz
MFC after: 1 week
Modified:
head/sys/netinet/tcp_output.c
Modified: head/sys/netinet/tcp_output.c
==============================================================================
--- head/sys/netinet/tcp_output.c Fri Nov 6 15:24:48 2009 (r198989)
+++ head/sys/netinet/tcp_output.c Fri Nov 6 16:55:05 2009 (r198990)
@@ -992,7 +992,7 @@ send:
* to read more data than can be buffered prior to transmitting on
* the connection.
*/
- if (recwin == 0)
+ if (th->th_win == 0)
tp->t_flags |= TF_RXWIN0SENT;
else
tp->t_flags &= ~TF_RXWIN0SENT;
More information about the svn-src-all
mailing list