From 404f2c48b31f508c42efbc58ffbbf4cbcbc8c446 Mon Sep 17 00:00:00 2001 From: elexis Date: Thu, 25 Oct 2018 11:58:26 +0000 Subject: [PATCH] Use a banmask for multiplayer matches that have lobby-authentication enabled. This prevents a lobby player banned by the host from rejoining after getting a new IP address and changing the rating part of the nickname, refs #5320, #3241 / 32da740f14, #3549 / 0fd8aa2a77 / D897. Differential Revision: https://code.wildfiregames.com/D1655 Reproduced By: Hannibal_Barca This was SVN commit r21918. --- source/network/NetServer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/network/NetServer.cpp b/source/network/NetServer.cpp index 08d2fd8b07..7f884fc455 100644 --- a/source/network/NetServer.cpp +++ b/source/network/NetServer.cpp @@ -804,7 +804,7 @@ void CNetServerWorker::KickPlayer(const CStrW& playerName, const bool ban) { // Remember name if (std::find(m_BannedPlayers.begin(), m_BannedPlayers.end(), playerName) == m_BannedPlayers.end()) - m_BannedPlayers.push_back(playerName); + m_BannedPlayers.push_back(m_LobbyAuth ? CStrW(playerName.substr(0, playerName.find(L" ("))) : playerName); // Remember IP address u32 ipAddress = (*it)->GetIPAddress(); @@ -988,7 +988,7 @@ bool CNetServerWorker::OnAuthenticate(void* context, CFsmEvent* event) } // Disconnect banned usernames - if (std::find(server.m_BannedPlayers.begin(), server.m_BannedPlayers.end(), username) != server.m_BannedPlayers.end()) + if (std::find(server.m_BannedPlayers.begin(), server.m_BannedPlayers.end(), server.m_LobbyAuth ? usernameWithoutRating : username) != server.m_BannedPlayers.end()) { session->Disconnect(NDR_BANNED); return true;