From 2e6a77a78a465797a5e78c55c6b16f45fc104e5c Mon Sep 17 00:00:00 2001 From: dP Date: Mon, 16 Aug 2021 12:09:54 +0300 Subject: [PATCH] Fix: connecting with the same name thrice hangs the server (#9485) --- src/network/network_server.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index fecaa2e00a..c506f60a41 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1541,13 +1541,12 @@ static void NetworkAutoCleanCompanies() bool NetworkMakeClientNameUnique(std::string &name) { bool is_name_unique = false; - uint number = 0; std::string original_name = name; - while (!is_name_unique) { + for (uint number = 1; !is_name_unique && number <= MAX_CLIENTS; number++) { // Something's really wrong when there're more names than clients is_name_unique = true; for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) { - if (ci->client_name.compare(name) == 0) { + if (ci->client_name == name) { /* Name already in use */ is_name_unique = false; break; @@ -1556,7 +1555,7 @@ bool NetworkMakeClientNameUnique(std::string &name) /* Check if it is the same as the server-name */ const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER); if (ci != nullptr) { - if (ci->client_name.compare(name) == 0) is_name_unique = false; // name already in use + if (ci->client_name == name) is_name_unique = false; // name already in use } if (!is_name_unique) {