Date: Mon, 10 Jan 2005 17:37:51 -0800 From: Girish Rayas <grayas@gmail.com> To: freebsd-net@freebsd.org Subject: Bug in TCP window update? Message-ID: <9c9fb1860501101737268508be@mail.gmail.com>
index | next in thread | raw e-mail
In tcp_input.c, window is updated when below condition is true, if ((thflags & TH_ACK) && (SEQ_LT(tp->snd_wl1, th->th_seq) || (tp->snd_wl1 == th->th_seq && (SEQ_LT(tp->snd_wl2, th->th_ack) || (tp->snd_wl2 == th->th_ack && tiwin > tp->snd_wnd))))) This check is to prevent old segments from affecting the send window. But, left trim logic that was executed earlier in tcp_input.c sets the th->th_seq to tp->rcv_nxt for old segments. In many scenarios this effectively causes snd_wl1 < th_seq and results in incorrect window update by old segments. Using actual sequence number of received segment in the above if statement will fix the problem. Any comments?home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9c9fb1860501101737268508be>
