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 majordomo@vger.rutgers.edu