CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]   2026/09/18 16:14:46

Modified files:
        sys/netinet    : tcp_input.c 

Log message:
Recalulate the TCP SACK list after memory exhaustion.

Acts1631 found that tcp(4) can advertise SACK blocks for data that
it has discarded when the global TCP reassembly pool is exhausted.
This can make a sender omit missing data from fast recovery and
wait for its retransmission timer.

This commit clears the receiver SACK report whenever the reassembly
allocation fails, before either path can discard queued data.  It
also returns -1 when the new input segment itself is discarded.
The caller maps that value back to zero TCP flags but does not add
the discarded range to the SACK report.  On the reuse path, the
accepted current segment is still passed to tcp_update_sack_list(),
after the stale report has been cleared.

from Acts1631; discussed with claudio@ tb@

Reply via email to