diff options
author | mohans <mohans@FreeBSD.org> | 2006-08-26 17:53:19 +0000 |
---|---|---|
committer | mohans <mohans@FreeBSD.org> | 2006-08-26 17:53:19 +0000 |
commit | a1c6033ca74cc1b61ac2df034d45311a95776cc2 (patch) | |
tree | c84d92c9f95d86d95b8b6657ac4a26d6945cf3e8 /sys/netinet/tcp_timewait.c | |
parent | e78225039a9c69ef198835329f81d719ace8df95 (diff) | |
download | FreeBSD-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.c | 4 |
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); } |