tcp: fix computation of offset
Only update the offset if actually retransmitting from the scoreboard. If not done correctly, this may result in trying to (re)-transmit data not being being in the socket buffe and therefore resulting in a panic. PR: 264257 PR: 263445 PR: 260393 Reviewed by: rscheff@ MFC after: 3 days Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D36626
This commit is contained in:
parent
55760984d5
commit
6d9e911fba
@ -338,10 +338,10 @@ tcp_default_output(struct tcpcb *tp)
|
||||
len = ((int32_t)ulmin(cwin,
|
||||
SEQ_SUB(p->end, p->rxmit)));
|
||||
}
|
||||
off = SEQ_SUB(p->rxmit, tp->snd_una);
|
||||
KASSERT(off >= 0,("%s: sack block to the left of una : %d",
|
||||
__func__, off));
|
||||
if (len > 0) {
|
||||
off = SEQ_SUB(p->rxmit, tp->snd_una);
|
||||
KASSERT(off >= 0,("%s: sack block to the left of una : %d",
|
||||
__func__, off));
|
||||
sack_rxmit = 1;
|
||||
sendalot = 1;
|
||||
TCPSTAT_INC(tcps_sack_rexmits);
|
||||
|
Loading…
Reference in New Issue
Block a user