DarkRift icon indicating copy to clipboard operation
DarkRift copied to clipboard

Server Not Disconnecting Some Clients

Open Bananahavoc opened this issue 6 years ago • 0 comments

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

  1. Setup a timer to send a reliable message to all clients on your server
  2. Connect a client
  3. On the client PC run clumsy with filter tcp and (tcp.DstPort == myPort or tcp.SrcPort == myPort) and set the drop rate to 100%
  4. Close the client app
  5. 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:

  1. Configure a SendTimeout on the server (default is 0, infinite)
  2. Configure a keep alive on the server and client
  3. 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.

Bananahavoc avatar Dec 23 '19 23:12 Bananahavoc