From 0968d009c8b4ec5b3f5d84000f2f9f5636f9198a Mon Sep 17 00:00:00 2001 From: rubidium42 Date: Tue, 11 May 2021 18:53:23 +0200 Subject: Fix #9243: [Network] For a dedicated server use a fallback client and server name Also warn when the client or server name has not been set and provide pointers on how to set them --- src/network/network.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src') diff --git a/src/network/network.cpp b/src/network/network.cpp index 29e66d932..d8f002547 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -841,6 +841,27 @@ static void NetworkInitGameInfo() strecpy(ci->client_name, _settings_client.network.client_name, lastof(ci->client_name)); } +/** + * Check whether the client and server name are set, for a dedicated server and if not set them to some default + * value and tell the user to change this as soon as possible. + * If the saved name is the default value, then the user is told to override this value too. + * This is only meant dedicated servers, as for the other servers the GUI ensures a name has been entered. + */ +static void CheckClientAndServerName() +{ + static const char *fallback_client_name = "Unnamed Client"; + if (StrEmpty(_settings_client.network.client_name) || strcmp(_settings_client.network.client_name, fallback_client_name) == 0) { + DEBUG(net, 0, "No \"client_name\" has been set, using \"%s\" instead. Please set this now using the \"name \" command.", fallback_client_name); + strecpy(_settings_client.network.client_name, fallback_client_name, lastof(_settings_client.network.client_name)); + } + + static const char *fallback_server_name = "Unnamed Server"; + if (StrEmpty(_settings_client.network.server_name) || strcmp(_settings_client.network.server_name, fallback_server_name) == 0) { + DEBUG(net, 0, "No \"server_name\" has been set, using \"%s\" instead. Please set this now using the \"server_name \" command.", fallback_server_name); + strecpy(_settings_client.network.server_name, fallback_server_name, lastof(_settings_client.network.server_name)); + } +} + bool NetworkServerStart() { if (!_network_available) return false; @@ -849,6 +870,9 @@ bool NetworkServerStart() IConsoleCmdExec("exec scripts/pre_server.scr 0"); if (_network_dedicated) IConsoleCmdExec("exec scripts/pre_dedicated.scr 0"); + /* Check for the client and server names to be set, but only after the scripts had a chance to set them.*/ + if (_network_dedicated) CheckClientAndServerName(); + NetworkDisconnect(false, false); NetworkInitialize(false); DEBUG(net, 1, "starting listeners for clients"); -- cgit v1.2.3-54-g00ecf