aboutgitcodebugslistschat
path: root/doc
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2025-09-30 22:26:02 +0200
committerStefano Brivio <sbrivio@redhat.com>2025-10-07 22:22:27 +0200
commitb3217aa5aec10704774c7142ef07daec5e698415 (patch)
tree8dfd7706c1a2ce3d9a69be343c7c11b843a327b7 /doc
parent2a16cdf3e605a1c72647ccd520106a1e59ec8d50 (diff)
downloadpasst-b3217aa5aec10704774c7142ef07daec5e698415.tar
passt-b3217aa5aec10704774c7142ef07daec5e698415.tar.gz
passt-b3217aa5aec10704774c7142ef07daec5e698415.tar.bz2
passt-b3217aa5aec10704774c7142ef07daec5e698415.tar.lz
passt-b3217aa5aec10704774c7142ef07daec5e698415.tar.xz
passt-b3217aa5aec10704774c7142ef07daec5e698415.tar.zst
passt-b3217aa5aec10704774c7142ef07daec5e698415.zip
tcp: Fix ACK sequence on FIN to tap
If we reach end-of-file on a socket (or get EPOLLRDHUP / EPOLLHUP) and send a FIN segment to the guest / container acknowledging a sequence number that's behind what we received so far, we won't have any further trigger to send an updated ACK segment, as we are now switching the epoll socket monitoring to edge-triggered mode. To avoid this situation, in tcp_update_seqack_wnd(), we set the next acknowledgement sequence to the current observed sequence, regardless of what was acknowledged socket-side. However, we don't necessarily call tcp_update_seqack_wnd() before sending the FIN segment, which might potentially lead to a situation, not observed in practice, where we unnecessarily cause a retransmission at some point after our FIN segment. Avoid that by setting the ACK sequence to whatever we received from the container / guest, before sending a FIN segment and switching to EPOLLET. Signed-off-by: Stefano Brivio <sbrivio@redhat.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'doc')
0 files changed, 0 insertions, 0 deletions