summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_timewait.c
diff options
context:
space:
mode:
authormohans <mohans@FreeBSD.org>2006-08-26 17:53:19 +0000
committermohans <mohans@FreeBSD.org>2006-08-26 17:53:19 +0000
commita1c6033ca74cc1b61ac2df034d45311a95776cc2 (patch)
treec84d92c9f95d86d95b8b6657ac4a26d6945cf3e8 /sys/netinet/tcp_timewait.c
parente78225039a9c69ef198835329f81d719ace8df95 (diff)
downloadFreeBSD-src-a1c6033ca74cc1b61ac2df034d45311a95776cc2.zip
FreeBSD-src-a1c6033ca74cc1b61ac2df034d45311a95776cc2.tar.gz
Fix for a bug that causes the computation of "len" in tcp_output() to
get messed up, resulting in an inconsistency between the TCP state and so_snd.
Diffstat (limited to 'sys/netinet/tcp_timewait.c')
-rw-r--r--sys/netinet/tcp_timewait.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/netinet/tcp_timewait.c b/sys/netinet/tcp_timewait.c
index fe8e4b5..aedd8b0 100644
--- a/sys/netinet/tcp_timewait.c
+++ b/sys/netinet/tcp_timewait.c
@@ -1573,6 +1573,10 @@ tcp_mtudisc(struct inpcb *inp, int errno)
tcpstat.tcps_mturesent++;
tp->t_rtttime = 0;
tp->snd_nxt = tp->snd_una;
+ tcp_free_sackholes(tp);
+ tp->snd_recover = tp->snd_max;
+ if (tp->sack_enable)
+ EXIT_FASTRECOVERY(tp);
tcp_output(tp);
return (inp);
}
OpenPOWER on IntegriCloud