summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
authorMichael Brown2009-06-23 02:29:43 +0200
committerMichael Brown2009-06-23 10:40:26 +0200
commit558c1a45fe30ffe3d6c67b2321e0fc973f13e9b7 (patch)
tree16153ed9464185891dabb5eaee235b318ff672bc /src/include/usr
parent[settings] Fix setting_cmp() to handle nameless settings (diff)
downloadipxe-558c1a45fe30ffe3d6c67b2321e0fc973f13e9b7.tar.gz
ipxe-558c1a45fe30ffe3d6c67b2321e0fc973f13e9b7.tar.xz
ipxe-558c1a45fe30ffe3d6c67b2321e0fc973f13e9b7.zip
[tcp] Improve robustness in the presence of duplicated received packets
gPXE responds to duplicated ACKs with an immediate retransmission, which can lead to a sorceror's apprentice syndrome. It also responds to out-of-range (or old duplicate) ACKs with a RST, which can cause valid connections to be dropped. Fix the sorceror's apprentice syndrome by leaving the retransmission timer running (and so inhibiting the immediate retransmission) when we receive a potential duplicate ACK. This seems to match the behaviour of Linux observed via wireshark traces. Fix the RST issue by sending RST only on out-of-range ACKs that occur before the connection is fully established, as per RFC 793. These problems were exposed during development of the 802.11 wireless link layer; the 802.11 protocol has a failure mode that can easily cause duplicated packets. The fixes were tested in a controlled way by faking large numbers of duplicated packets in the rtl8139 driver. Originally-fixed-by: Joshua Oreman <oremanj@rwcr.net>
Diffstat (limited to 'src/include/usr')
0 files changed, 0 insertions, 0 deletions