2.1 resets the connection when this happens, but dropping the packet
is the right thing to do. with the following patch, it looks like this:
0.620429 me.1753 > necxdirect.necx.com.http: S 255782508:255782508(0)
win 32120 <mss 1460,sackOK,timestamp 9460369[|tcp]> (DF)
0.713838 necxdirect.necx.com.http > me.1753: . ack 255782509
win 65160 <nop,nop,timestamp 190827742 9460069> (DF)
0.233134 necxdirect.necx.com.http > me.1753: S 1457983341:1457983341(0)
ack 255782509 win 65160
<nop,nop,timestamp 190827794 9460069,nop,[|tcp]> (DF)
0.233201 me.1753 > necxdirect.necx.com.http: . ack 1 win 32120
<nop,nop,timestamp 9460430 190827794> (DF)
--- linux-2.1.131/net/ipv4/tcp_input.c Wed Nov 18 12:06:05 1998
+++ linux/net/ipv4/tcp_input.c Thu Dec 3 12:28:04 1998
@@ -2056,13 +2056,11 @@
}
if(!th->syn) {
- /* A valid ack from a different connection
- * start. Shouldn't happen but cover it.
+ /* Some stacks apparently send an syn-less
+ * ack in response to a syn under load.
+ * We used to reset, but dropping is correct.
*/
- sk->err = ECONNRESET;
- sk->state_change(sk);
- tcp_statistics.TcpAttemptFails++;
- return 1;
+ goto discard;
}
/* Ok.. it's good. Set up sequence numbers and
regards, mark hahn.
-
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/