mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-28 03:12:19 +00:00
Make the playername-deduplication ("User" -> "User (2)") optional.
Have it disabled by default to fix #3604. Prevents players from rejoining as late-observers in case they timed-out on the client-side but not on the server-side. This was SVN commit r17851.
This commit is contained in:
@@ -901,7 +901,22 @@ bool CNetServerWorker::OnAuthenticate(void* context, CFsmEvent* event)
|
||||
}
|
||||
|
||||
CAuthenticateMessage* message = (CAuthenticateMessage*)event->GetParamRef();
|
||||
CStrW username = server.DeduplicatePlayerName(SanitisePlayerName(message->m_Name));
|
||||
CStrW username = SanitisePlayerName(message->m_Name);
|
||||
|
||||
// Either deduplicate or prohibit join if name is in use
|
||||
bool duplicatePlayernames = false;
|
||||
CFG_GET_VAL("network.duplicatePlayernames", duplicatePlayernames);
|
||||
if (duplicatePlayernames)
|
||||
username = server.DeduplicatePlayerName(username);
|
||||
else if (std::find_if(
|
||||
server.m_Sessions.begin(), server.m_Sessions.end(),
|
||||
[&username] (const CNetServerSession* session)
|
||||
{ return session->GetUserName() == username; })
|
||||
!= server.m_Sessions.end())
|
||||
{
|
||||
session->Disconnect(NDR_PLAYERNAME_IN_USE);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Disconnect banned usernames
|
||||
if (std::find(server.m_BannedPlayers.begin(), server.m_BannedPlayers.end(), username) != server.m_BannedPlayers.end())
|
||||
|
||||
Reference in New Issue
Block a user