TCP connection stuck in SYN_RECV state despite ACK received, Linux 2.6.18, embedded, ARM
- by waynix
My client cannot connect to my protocol port (TCP) after some network glitches, even though all other protocols (telnet/HTTP/FTP) work fine.
netstat shows that my server is listening and tcpdump on the server shows all 3 packets are exchanged:
18:29:16.578964 IP 10.9.59.10.3355 10.9.43.131.5084: S 2602965897:2602965897(0) win 65535 <mss 1460,nop,nop,sackOK>
18:29:16.579107 IP 10.9.43.131.5084 10.9.59.10.3355: S 3464857909:3464857909(0) ack 2602965898 win 5840 <mss 1460,nop,nop,sackOK>
18:29:16.579284 IP 10.9.59.10.3355 10.9.43.131.5084: . ack 1 win 65535
But somehow netstat -t shows the connection still in SYN_RECV, as if the ack is not seen by the TCP state machine. I have to restart my server to get it to work.
syncookie is not enabled, and I know from client code behavior and tcpdump that there is no SYN flooding.
Help much appreciated.