Skip to content

Fix some cases of Steam connection leak - #998

Open
mibac138 wants to merge 4 commits into
rwmt:devfrom
mibac138:disconnect-fix
Open

mibac138 wants to merge 4 commits into
rwmt:devfrom
mibac138:disconnect-fix

Conversation

@mibac138

Copy link
Copy Markdown
Member

Fixes an issue where a connection is leaked and prevents a user from re-joining a game. This does not fix all issues with reconnecting. Consider the following scenario:

  • user connects, clicks fix and restart
  • server does not receive a disconnection packet: connection is closed by the client, SteamP2P does not flush or provide a way to flush remaining packets nor does it send any disconnection message on it's own
  • client restarts
  • client reconnects. if the client took longer than the P2P session timeout (15s? not sure), the server will have the previous connection already removed and the client can rejoin. otherwise, the client still cannot join (server still considers the old connection valid, the new connection is merged into it, and the server doesn't allow a single connection to create a player twice) and the old workaround still applies (/kick)

Later on, I'd like to switch from SteamP2P to SteamNetworkingSockets which provide a richer API and should allow to fully solve this issue (e.g. close connection with a reason and wait until the reason is sent)

Register a disconnect packet handler in ClientSteamState so an early
server rejection displays its reason and ends the connection.
Should fix an issue where a player connecting through Steam and being rejected by the server did not receive any disconnection packet and was stuck in Connecting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant