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) {