diff options
author | ps <ps@FreeBSD.org> | 2005-05-13 18:02:02 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2005-05-13 18:02:02 +0000 |
commit | 861ed0532c581886df16f8004e3afbff0319a636 (patch) | |
tree | 0460df01c615d10672eca73971fe52364c1b5e1f /sys/netinet | |
parent | f96b51e1fae5f83f6597c18a3d05214f9d5678e8 (diff) | |
download | FreeBSD-src-861ed0532c581886df16f8004e3afbff0319a636.zip FreeBSD-src-861ed0532c581886df16f8004e3afbff0319a636.tar.gz |
Fix for a bug where the "nexthole" sack hint is out of sync with the
real next hole to retransmit from the scoreboard, caused by a bug
which did not update the "nexthole" hint in one case in
tcp_sack_option().
Reported by: Daniel Eriksson
Submitted by: Mohan Srinivasan
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/tcp_sack.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index 924228f..aec8400 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -452,6 +452,8 @@ tcp_sack_option(struct tcpcb *tp, struct tcphdr *th, u_char *cp, int optlen) tp->snd_numholes++; tcp_sack_globalholes++; TAILQ_INSERT_TAIL(&tp->snd_holes, temp, scblink); + if (tp->sackhint.nexthole == NULL) + tp->sackhint.nexthole = temp; } if (SEQ_LT(tp->rcv_lastsack, sack.end)) tp->rcv_lastsack = sack.end; |