From d6f84b43f52724525c8d1862b8f025eab044e3da Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sun, 30 Jun 2024 00:01:31 +0530 Subject: [PATCH] fix this weird issue with kicking inactive players --- src/net/ClientConnection.hx | 1 + src/net/Net.hx | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/net/ClientConnection.hx b/src/net/ClientConnection.hx index 2b9c763c..eff06aa0 100644 --- a/src/net/ClientConnection.hx +++ b/src/net/ClientConnection.hx @@ -30,6 +30,7 @@ class ClientConnection extends GameConnection { var _rttRecords:Array = []; var lastRecvTime:Float; var didWarnTimeout:Bool = false; + var leftAlready = false; public function new(id:Int, socket:RTCPeerConnection, datachannel:RTCDataChannel, datachannelUnreliable:RTCDataChannel) { super(id); diff --git a/src/net/Net.hx b/src/net/Net.hx index 79415e88..1c72d469 100644 --- a/src/net/Net.hx +++ b/src/net/Net.hx @@ -408,6 +408,7 @@ class Net { if (conn.needsTimeoutKick(t)) { if (Net.isHost) { dc.close(); + onClientLeave(conn); } if (Net.isClient) { disconnect(); @@ -545,6 +546,10 @@ class Net { static function onClientLeave(cc:ClientConnection) { if (!Net.isMP || cc == null) return; + if (cc.leftAlready) + return; + cc.leftAlready = true; + NetCommands.clientDisconnected(cc.id); if (cc.id != 0) {