On Fri, Oct 30, 1998 at 11:47:41AM +0100, Alexey Kuznetsov wrote:
> Hello!
>
> > AFAIK yahoo uses FreeBSD boxes. FreeBSD implements T/TCP as standard so
> > it could be related to some T/TCP breakage (it original T/TCP code that
> > they incorporated is known to have a few bugs)
> >
> > I'm seeing the same problem with yahoo BTW.
> >
> > Is it worth asking tcp-impl?
>
> Actually, it is bug in our tcp.
> tcp specs section "segment arrives", subsection "SYN_SENT",
> the last clause unambigously states that bare ack ISS<SEG.ACK<=SND.NXT
> in state syn_sent must be silently dropped.
NetBSD sends RST too in this case. One difference is though that they don't
pass ECONNRESET to the user - maybe it would be a good idea to not do it
in Linux too. The appended patch implements it.
The interesting question is why yahoo sends these spare acks. I've seen it
numerous times too so it probably not an accident. Not passing ECONNRESET
will just hide the occurrence.
-Andi
Index: linux/net/ipv4/tcp_input.c
===================================================================
RCS file: /vger/u4/cvs/linux/net/ipv4/tcp_input.c,v
retrieving revision 1.133
diff -u -r1.133 tcp_input.c
--- tcp_input.c 1998/10/21 05:38:53 1.133
+++ tcp_input.c 1998/10/30 04:19:28
@@ -1998,14 +2009,16 @@
/* We got an ack, but it's not a good ack. */
if(!tcp_ack(sk,th, TCP_SKB_CB(skb)->seq,
TCP_SKB_CB(skb)->ack_seq, len)) {
+#if 0
sk->err = ECONNRESET;
sk->state_change(sk);
tcp_statistics.TcpAttemptFails++;
+#endif
return 1;
}
if(th->rst) {
- tcp_reset(sk,skb);
+ tcp_reset(sk,skb);
goto discard;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to [EMAIL PROTECTED]