We have client and server applications that use the local loopback interface for sending data on connected stream sockets. The server application detects a "Connection timed out" error on its connected stream socket therefore the stream socket is closed. The client application never receives a stream socket error that the connection has been closed therefore it waits forever for data from the server. Normal operation would be that the client would receive an error at the stream socket layer. The client would close out its stream socket then try to reconnect with the server.<br />
We have 2 very similar server applications that listen for specfic UDP messages on 2 different networks. Once the message is received, the message is transmitted to their respective client via the local loopback interface with connected stream sockets. The 2 client applications are the same but different instances that have begin configured to receive a specific type of message.<br />
When the error occurred, both server applications logged a "Connection timed out" error within 3 secs of each other. Both clients never received any indication that their connection had been closed by their respective server.<br />
We have a logging mechanism that would have logged an thrown exception if we had been unable to close the server socket successfully. There wasn't a logged exception there the server socket was closed successfully. There is an entry in the log that we are in the process of disconnecting from the client via a socket close command.
↧