DarkRift
DarkRift copied to clipboard
Server Not Disconnecting Some Clients
Quick Description
If a client has all network availability suddenly terminate, the server will not detect that disconnect.
Explanation
Normally, the tcp socket is closed which notifies the server that the user is disconnected. However, this is not a reliable mechanism for detecting disconnects, as the sig final message may not have been sent.
For Issues
- Setup a timer to send a reliable message to all clients on your server
- Connect a client
- On the client PC run clumsy with filter tcp and (tcp.DstPort == myPort or tcp.SrcPort == myPort) and set the drop rate to 100%
- Close the client app
- Observe that the server will not detect the disconnect, and it will keep sending reliable messages to a non-existent client
Possible solutions are to:
- Configure a SendTimeout on the server (default is 0, infinite)
- Configure a keep alive on the server and client
- Encourage users to have their own system for detecting non-responsive disconnects
Just to be clear, I love DR and I think you guys did a fantastic job.