diff options
| author | Jonathan Lemon <jlemon@FreeBSD.org> | 2003-02-26 18:20:41 +0000 |
|---|---|---|
| committer | Jonathan Lemon <jlemon@FreeBSD.org> | 2003-02-26 18:20:41 +0000 |
| commit | 272c5dfe93d88513b92a540c489e5c78d5de2616 (patch) | |
| tree | cd6504ec1d6b1d9d0c466b485cafeb5b53425e1c /sys/netinet | |
| parent | f1dacb52704f1505c6158c7362ee848ce7482fcb (diff) | |
Notes
Diffstat (limited to 'sys/netinet')
| -rw-r--r-- | sys/netinet/tcp_input.c | 6 | ||||
| -rw-r--r-- | sys/netinet/tcp_reass.c | 6 |
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: |
