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.
This commit is contained in:
mohans 2006-08-26 17:53:19 +00:00
parent e78225039a
commit a1c6033ca7
2 changed files with 8 additions and 0 deletions

View File

@ -1573,6 +1573,10 @@ tcp_mtudisc(struct inpcb *inp, int errno)
tcpstat.tcps_mturesent++; tcpstat.tcps_mturesent++;
tp->t_rtttime = 0; tp->t_rtttime = 0;
tp->snd_nxt = tp->snd_una; 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); tcp_output(tp);
return (inp); return (inp);
} }

View File

@ -1573,6 +1573,10 @@ tcp_mtudisc(struct inpcb *inp, int errno)
tcpstat.tcps_mturesent++; tcpstat.tcps_mturesent++;
tp->t_rtttime = 0; tp->t_rtttime = 0;
tp->snd_nxt = tp->snd_una; 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); tcp_output(tp);
return (inp); return (inp);
} }