summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_output.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2009-11-06 16:55:05 +0000
committerjhb <jhb@FreeBSD.org>2009-11-06 16:55:05 +0000
commit5eac2449e3f85caefc9187c5cc3b9a161cd45e73 (patch)
treecb01a33b3e5e7ee5e9748353c7a98420d22aa3d7 /sys/netinet/tcp_output.c
parent892fe839c429ee86e92b57abaacad6a2b93b5e90 (diff)
downloadFreeBSD-src-5eac2449e3f85caefc9187c5cc3b9a161cd45e73.zip
FreeBSD-src-5eac2449e3f85caefc9187c5cc3b9a161cd45e73.tar.gz
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
Diffstat (limited to 'sys/netinet/tcp_output.c')
-rw-r--r--sys/netinet/tcp_output.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index ee33ea2..ebe5e36 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -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;
OpenPOWER on IntegriCloud