mirror of https://github.com/OpenTTD/OpenTTD
Fix: connecting with the same name thrice hangs the server (#9485)
parent
d212505dcf
commit
2e6a77a78a
|
@ -1541,13 +1541,12 @@ static void NetworkAutoCleanCompanies()
|
||||||
bool NetworkMakeClientNameUnique(std::string &name)
|
bool NetworkMakeClientNameUnique(std::string &name)
|
||||||
{
|
{
|
||||||
bool is_name_unique = false;
|
bool is_name_unique = false;
|
||||||
uint number = 0;
|
|
||||||
std::string original_name = name;
|
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;
|
is_name_unique = true;
|
||||||
for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) {
|
for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) {
|
||||||
if (ci->client_name.compare(name) == 0) {
|
if (ci->client_name == name) {
|
||||||
/* Name already in use */
|
/* Name already in use */
|
||||||
is_name_unique = false;
|
is_name_unique = false;
|
||||||
break;
|
break;
|
||||||
|
@ -1556,7 +1555,7 @@ bool NetworkMakeClientNameUnique(std::string &name)
|
||||||
/* Check if it is the same as the server-name */
|
/* Check if it is the same as the server-name */
|
||||||
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER);
|
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER);
|
||||||
if (ci != nullptr) {
|
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) {
|
if (!is_name_unique) {
|
||||||
|
|
Loading…
Reference in New Issue