From df0b06489954bca48fafcc1bba435f87461c9840 Mon Sep 17 00:00:00 2001 From: juanjp600 Date: Mon, 29 Aug 2016 19:02:37 -0300 Subject: [PATCH] Hacked client can't join full server anymore Not sure how they can get around lidgren's checking, but this should do the trick --- Subsurface/Source/Networking/GameServer.cs | 15 ++++++--------- Subsurface/Source/Networking/GameServerLogin.cs | 6 ++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 6f9a44e05..ab816bf24 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1640,15 +1640,12 @@ namespace Barotrauma.Networking if (jobPrefab != null) jobPreferences.Add(jobPrefab); } - foreach (Client c in connectedClients) - { - if (c.Connection != message.SenderConnection) continue; - - c.characterInfo = new CharacterInfo(Character.HumanConfigFile, name, gender); - c.characterInfo.HeadSpriteId = headSpriteId; - c.jobPreferences = jobPreferences; - break; - } + Client sender = connectedClients.Find(c => c.Connection == message.SenderConnection); + if (sender == null) return; + + sender.characterInfo = new CharacterInfo(Character.HumanConfigFile, name, gender); + sender.characterInfo.HeadSpriteId = headSpriteId; + sender.jobPreferences = jobPreferences; } public void WriteCharacterData(NetOutgoingMessage msg, string name, Character c) diff --git a/Subsurface/Source/Networking/GameServerLogin.cs b/Subsurface/Source/Networking/GameServerLogin.cs index 4390d1a26..cce6d0c5f 100644 --- a/Subsurface/Source/Networking/GameServerLogin.cs +++ b/Subsurface/Source/Networking/GameServerLogin.cs @@ -81,6 +81,12 @@ namespace Barotrauma.Networking return; } + if (ConnectedClients.Count>=config.MaximumConnections) + { + inc.SenderConnection.Disconnect("Server full"); + return; + } + DebugConsole.NewMessage("New player has joined the server", Color.White); byte userID;