summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_sack.c
diff options
context:
space:
mode:
authorps <ps@FreeBSD.org>2005-05-13 18:02:02 +0000
committerps <ps@FreeBSD.org>2005-05-13 18:02:02 +0000
commit861ed0532c581886df16f8004e3afbff0319a636 (patch)
tree0460df01c615d10672eca73971fe52364c1b5e1f /sys/netinet/tcp_sack.c
parentf96b51e1fae5f83f6597c18a3d05214f9d5678e8 (diff)
downloadFreeBSD-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/tcp_sack.c')
-rw-r--r--sys/netinet/tcp_sack.c2
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;
OpenPOWER on IntegriCloud