Page MenuHomeFreeBSD

D35428.diff
No OneTemporary

D35428.diff

diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -958,15 +958,17 @@
hole = tp->sackhint.nexthole;
if (hole == NULL)
return (hole);
- if (SEQ_LT(hole->rxmit, hole->end))
- goto out;
- while ((hole = TAILQ_NEXT(hole, scblink)) != NULL) {
- if (SEQ_LT(hole->rxmit, hole->end)) {
- tp->sackhint.nexthole = hole;
- break;
+ if (SEQ_GEQ(hole->rxmit, hole->end)) {
+ for (;;) {
+ hole = TAILQ_NEXT(hole, scblink);
+ if (hole == NULL)
+ return (hole);
+ if (SEQ_LT(hole->rxmit, hole->end)) {
+ tp->sackhint.nexthole = hole;
+ break;
+ }
}
}
-out:
KASSERT(SEQ_LT(hole->start, hole->end), ("%s: hole.start >= hole.end", __func__));
KASSERT(SEQ_LT(hole->start, tp->snd_fack), ("%s: hole.start >= snd.fack", __func__));
KASSERT(SEQ_LT(hole->end, tp->snd_fack), ("%s: hole.end >= snd.fack", __func__));

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 25, 5:30 AM (15 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26101477
Default Alt Text
D35428.diff (906 B)

Event Timeline