1
votes

Heres the scenrio: TCP server running on solaris, TCP client running on Linux. Client connects and starts sending data. Client stops sending data and after N inactive seconds the server send a FIN, ACK (presumably from a shutdown call on the send pipe). The client starts sending data again. The server freaks out and starts sending a bunch of RST packets with no other flags set. The first packet is lost and they handshake again. The send never returns an error and the one packet is silently lost.

Any ideas why the RST is not being propagated to the client?

1
A tcpdump on the client + a strace of the client would be helpful in diagnosing. From your description, it seems the client is ignoring errors and reconnecting after a timeout. - ninjalj
The kernel won't do another handshake unless the client calls connect() again. - caf
I wasn't seeing a send error and re-connnet. But now I am, so I'm willing to admit the mistake until I find otherwise. Thanks. - Jaime
There is no evidence here that the RST isn't being propagated to the client. More likely the client is just ignoring send() errors. - user207421

1 Answers

0
votes

The send error and re-connect is being propgated. My bad. Staring at logs too long I guess. THANKS!