diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index ee0e00480..67f2190bb 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -366,7 +366,45 @@ namespace Barotrauma.Networking { try { - + switch (inc.MessageType) + { + case NetIncomingMessageType.Data: + ClientPacketHeader header = (ClientPacketHeader)inc.ReadByte(); + switch (header) + { + case ClientPacketHeader.REQUEST_AUTH: + ClientAuthRequest(inc.SenderConnection); + break; + case ClientPacketHeader.REQUEST_INIT: + ClientInitialize(inc); + break; + case ClientPacketHeader.UPDATE_LOBBY: + //TODO + break; + case ClientPacketHeader.UPDATE_INGAME_ALIVE: + //TODO + break; + case ClientPacketHeader.UPDATE_INGAME_SPECTATING: + //TODO + break; + } + break; + case NetIncomingMessageType.ConnectionApproval: + if (banList.IsBanned(inc.SenderEndPoint.Address.ToString())) + { + inc.SenderConnection.Deny("You have been banned from the server"); + } + else if (ConnectedClients.Count >= MaxPlayers) + { + inc.SenderConnection.Deny("Server full"); + } + else + { + inc.SenderConnection.Approve(); + } + break; + } + } catch (Exception e) { diff --git a/Subsurface/Source/Networking/GameServerLogin.cs b/Subsurface/Source/Networking/GameServerLogin.cs index ade2fc44a..1aeaf116e 100644 --- a/Subsurface/Source/Networking/GameServerLogin.cs +++ b/Subsurface/Source/Networking/GameServerLogin.cs @@ -32,11 +32,11 @@ namespace Barotrauma.Networking { List unauthenticatedClients = new List(); - private void ClientPasswordRequest(NetConnection conn) + private void ClientAuthRequest(NetConnection conn) { //client wants to know if server requires password - if (ConnectedClients.Count > MaxPlayers) + if (ConnectedClients.Count >= MaxPlayers) { //server is full, can't allow new connection conn.Disconnect("Server full");