From 31897eaa7de865d41b46f7158c70f94debe1ec66 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Tue, 20 Apr 2021 16:26:07 +0200 Subject: Codechange: split ParseConnectionString into two functions One also looks for a company, the other doesn't. There were more uses of the latter than the first, leaving very weird code all over the place. --- src/network/network.cpp | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'src/network/network.cpp') diff --git a/src/network/network.cpp b/src/network/network.cpp index f4640191c..e0355ce2e 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -446,6 +446,36 @@ static void CheckPauseOnJoin() CheckPauseHelper(NetworkHasJoiningClient(), PM_PAUSED_JOIN); } +/** + * Converts a string to ip/port + * Format: IP:port + * + * connection_string will be re-terminated to separate out the hostname, port will + * be set to the port strings given by the user, inside the memory area originally + * occupied by connection_string. + */ +void ParseConnectionString(const char **port, char *connection_string) +{ + bool ipv6 = (strchr(connection_string, ':') != strrchr(connection_string, ':')); + for (char *p = connection_string; *p != '\0'; p++) { + switch (*p) { + case '[': + ipv6 = true; + break; + + case ']': + ipv6 = false; + break; + + case ':': + if (ipv6) break; + *port = p + 1; + *p = '\0'; + break; + } + } +} + /** * Converts a string to ip/port/company * Format: IP:port#company @@ -454,11 +484,10 @@ static void CheckPauseOnJoin() * be set to the company and port strings given by the user, inside the memory area originally * occupied by connection_string. */ -void ParseConnectionString(const char **company, const char **port, char *connection_string) +void ParseGameConnectionString(const char **company, const char **port, char *connection_string) { bool ipv6 = (strchr(connection_string, ':') != strrchr(connection_string, ':')); - char *p; - for (p = connection_string; *p != '\0'; p++) { + for (char *p = connection_string; *p != '\0'; p++) { switch (*p) { case '[': ipv6 = true; @@ -592,7 +621,6 @@ void NetworkAddServer(const char *b) { if (*b != '\0') { const char *port = nullptr; - const char *company = nullptr; char host[NETWORK_HOSTNAME_LENGTH]; uint16 rport; @@ -601,7 +629,7 @@ void NetworkAddServer(const char *b) strecpy(_settings_client.network.connect_to_ip, b, lastof(_settings_client.network.connect_to_ip)); rport = NETWORK_DEFAULT_PORT; - ParseConnectionString(&company, &port, host); + ParseConnectionString(&port, host); if (port != nullptr) rport = atoi(port); NetworkUDPQueryServer(NetworkAddress(host, rport), true); -- cgit v1.2.3-70-g09d2