svn commit: r223049 - head/sys/netinet
John Baldwin
jhb at FreeBSD.org
Mon Jun 13 15:38:31 UTC 2011
Author: jhb
Date: Mon Jun 13 15:38:31 2011
New Revision: 223049
URL: http://svn.freebsd.org/changeset/base/223049
Log:
Advance the advertised window (rcv_adv) to the currently received data
(rcv_nxt) if we advertising a zero window. This can be true when ACK'ing
a window probe whose one byte payload was accepted rather than dropped
because the socket's receive buffer was not completely full, but the
remaining space was smaller than the window scale.
This ensures that window probe ACKs satisfy the assumption made in r221346
and closes a window where rcv_nxt could be greater than rcv_adv.
Tested by: trasz, pho, trociny
Reviewed by: silby
MFC after: 1 week
Modified:
head/sys/netinet/tcp_output.c
Modified: head/sys/netinet/tcp_output.c
==============================================================================
--- head/sys/netinet/tcp_output.c Mon Jun 13 13:40:12 2011 (r223048)
+++ head/sys/netinet/tcp_output.c Mon Jun 13 15:38:31 2011 (r223049)
@@ -1331,7 +1331,7 @@ out:
* then remember the size of the advertised window.
* Any pending ACK has now been sent.
*/
- if (recwin > 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv))
+ if (recwin >= 0 && SEQ_GT(tp->rcv_nxt + recwin, tp->rcv_adv))
tp->rcv_adv = tp->rcv_nxt + recwin;
tp->last_ack_sent = tp->rcv_nxt;
tp->t_flags &= ~(TF_ACKNOW | TF_DELACK);
More information about the svn-src-all
mailing list