summaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorJonathan Lemon <jlemon@FreeBSD.org>2003-02-26 18:20:41 +0000
committerJonathan Lemon <jlemon@FreeBSD.org>2003-02-26 18:20:41 +0000
commit272c5dfe93d88513b92a540c489e5c78d5de2616 (patch)
treecd6504ec1d6b1d9d0c466b485cafeb5b53425e1c /sys/netinet
parentf1dacb52704f1505c6158c7362ee848ce7482fcb (diff)
Notes
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_input.c6
-rw-r--r--sys/netinet/tcp_reass.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 2fec7831f6f7..7b4827a73670 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -2913,9 +2913,11 @@ tcp_timewait(tw, to, th, m, tlen)
}
/*
- * Acknowlege the segment, then drop it.
+ * Acknowledge the segment if it has data or is not a duplicate ACK.
*/
- tcp_twrespond(tw, TH_ACK);
+ if (thflags != TH_ACK || tlen != 0 ||
+ th->th_seq != tw->rcv_nxt || th->th_ack != tw->snd_nxt)
+ tcp_twrespond(tw, TH_ACK);
goto drop;
reset:
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 2fec7831f6f7..7b4827a73670 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -2913,9 +2913,11 @@ tcp_timewait(tw, to, th, m, tlen)
}
/*
- * Acknowlege the segment, then drop it.
+ * Acknowledge the segment if it has data or is not a duplicate ACK.
*/
- tcp_twrespond(tw, TH_ACK);
+ if (thflags != TH_ACK || tlen != 0 ||
+ th->th_seq != tw->rcv_nxt || th->th_ack != tw->snd_nxt)
+ tcp_twrespond(tw, TH_ACK);
goto drop;
reset: