Re: TCP TIME-WAIT bug in Linux 2.2.5 (still there I think)

Vijay G. Bharadwaj (vgb@isr.umd.edu)
Mon, 26 Jul 1999 18:08:59 -0400 (EDT)


On 26 Jul 1999, Andi Kleen wrote:

> A patch that should fix it is included in
> ftp.firstfloor.org:/pub/ak/2.2.10-net-patchkit

A couple of questions:

(in tcp_timewait_state_process)

+ /* Ack old packets if necessary */
+ if (!after(TCP_SKB_CB(skb)->end_seq, tw->rcv_nxt))
+ return TCP_TW_ACK;

Referring to the passage from RFC 793 I quoted earlier, (i.e. "The only
thing that can arrive is a retransmission of the FIN") maybe this should
only send an ACK if the FIN bit is set and (TCP_SKB_CB(skb)->end_seq ==
tw->rcv_nxt)? Anything else is probably just an uninteresting old
duplicate and should be silently dropped, I think. (be conservative in
what you send, etc etc)

Also,

(in tcp_v4_send_ack)

+ rth.ack_seq = th->fin ? htonl(ntohl(th->seq)+1) : th->seq;

Why assume that there was no data in the packet? Wouldn't

rth.ack_seq = htonl(TCP_SKB_CB(skb)->end_seq);

be better? (I might have an off-by-one error there, I can't check the
source right now...)

(and besides, why would we be generating an ACK for a data-less and
FIN-less packet?)

-Vijay

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/