[TCP] Avoid shrinking TCP window
authorMichael Brown <mcb30@etherboot.org>
Wed, 4 Jun 2008 23:28:17 +0000 (00:28 +0100)
committerMichael Brown <mcb30@etherboot.org>
Wed, 4 Jun 2008 23:28:17 +0000 (00:28 +0100)
commit1a68d3fef3e48b67448404df11a6dacbb34e6053
tree0f134db916aaa7fb6959c2a0d4290f59ea54b687
parentd615b00443e9265f87f6a08e84c28eb5dcee6f49
[TCP] Avoid shrinking TCP window

Maintain state for the advertised window length, and only ever increase
it (instead of calculating it afresh on each transmit).  This avoids
triggering "treason uncloaked" messages on Linux peers.

Respond to zero-length TCP keepalives (i.e. empty data packets
transmitted outside the window).  Even if the peer wouldn't otherwise
expect an ACK (because its packet consumed no sequence space), force an
ACK if it was outside the window.

We don't yet generate TCP keepalives.  It could be done, but it's unclear
what benefit this would have.  (Linux, for example, doesn't start sending
keepalives until the connection has been idle for two hours.)
src/net/tcp.c