diff options
author | rubidium <rubidium@openttd.org> | 2009-04-08 12:09:07 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-04-08 12:09:07 +0000 |
commit | 9d6edae94d5e5e852b461b09e6515cc83861745f (patch) | |
tree | 1cbee29338e9eaa759d845ef73e2f390476df500 | |
parent | 18146572b0a0cbb3eb89738f633fefd903df9692 (diff) | |
download | openttd-9d6edae94d5e5e852b461b09e6515cc83861745f.tar.xz |
(svn r15981) -Fix: don't print the address family when writing the IP+port to the config file.
-rw-r--r-- | src/network/core/address.cpp | 18 | ||||
-rw-r--r-- | src/network/core/address.h | 3 | ||||
-rw-r--r-- | src/network/network.cpp | 4 |
3 files changed, 15 insertions, 10 deletions
diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index ba81a6c0d..ad0e6b18f 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -56,18 +56,22 @@ void NetworkAddress::SetPort(uint16 port) } } -const char *NetworkAddress::GetAddressAsString() +const char *NetworkAddress::GetAddressAsString(bool with_family) { /* 6 = for the : and 5 for the decimal port number */ static char buf[NETWORK_HOSTNAME_LENGTH + 6 + 7]; - char family; - switch (this->address.ss_family) { - case AF_INET: family = '4'; break; - case AF_INET6: family = '6'; break; - default: family = '?'; break; + if (with_family) { + char family; + switch (this->address.ss_family) { + case AF_INET: family = '4'; break; + case AF_INET6: family = '6'; break; + default: family = '?'; break; + } + seprintf(buf, lastof(buf), "%s:%d (IPv%c)", this->GetHostname(), this->GetPort(), family); + } else { + seprintf(buf, lastof(buf), "%s:%d", this->GetHostname(), this->GetPort()); } - seprintf(buf, lastof(buf), "%s:%d (IPv%c)", this->GetHostname(), this->GetPort(), family); return buf; } diff --git a/src/network/core/address.h b/src/network/core/address.h index e0ef9889b..a2fac9845 100644 --- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -122,9 +122,10 @@ public: /** * Get the address as a string, e.g. 127.0.0.1:12345. + * @param with_family whether to add the family (e.g. IPvX). * @return the address */ - const char *GetAddressAsString(); + const char *GetAddressAsString(bool with_family = true); /** * Get the address in it's internal representation. diff --git a/src/network/network.cpp b/src/network/network.cpp index c5f24e666..1bb207ff0 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -374,7 +374,7 @@ static void CheckMinActiveClients() * occupied by connection_string. */ void ParseConnectionString(const char **company, const char **port, char *connection_string) { - bool ipv6 = false; + bool ipv6 = (strchr(connection_string, ':') != strrchr(connection_string, ':')); char *p; for (p = connection_string; *p != '\0'; p++) { switch (*p) { @@ -675,7 +675,7 @@ void NetworkRebuildHostList() _network_host_list.Clear(); for (NetworkGameList *item = _network_game_list; item != NULL; item = item->next) { - if (item->manually) *_network_host_list.Append() = strdup(item->address.GetAddressAsString()); + if (item->manually) *_network_host_list.Append() = strdup(item->address.GetAddressAsString(false)); } } |