8152e9d075
Under the normal close sequence, when we receive a FIN|ACK, we enter TIME-WAIT and respond to that LAST-ACK with an ACK. Our TCP stack would send an ACK in response to *any* ACK, which included FIN|ACK but also included regular ACKs. (Or PSH|ACKs, which is what we were actually getting/sending). That was more ACKs than is necessary and results in an endless ACK storm if we were under the simultaneous close sequence. In that scenario, both sides of a connection are in TIME-WAIT. Both sides receive FIN|ACK, and both respond with an ACK. Then both sides receive *those* ACKs, and respond again. This continues until the TIME-WAIT wait period elapses and each side's TCP timers (in the Plan 9 / Akaros case) shut down. The fix for this is to only respond to a FIN|ACK when we are in TIME-WAIT. |
||
---|---|---|
386 | ||
68000 | ||
68020 | ||
acme | ||
adm/timezone | ||
amd64 | ||
arm | ||
lib | ||
mips | ||
power | ||
power64 | ||
rc | ||
sparc | ||
sparc64 | ||
spim | ||
sys | ||
.hgignore |