[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bug in TCP window update?
- Subject: Bug in TCP window update?
- From: grayas at gmail.com (Girish Rayas)
- Date: Mon Jan 10 17:37:54 2005
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?
Visit your host, monkey.org