Mercurial > hg > openttd
changeset 17896:b76a26d921f1 draft
(svn r22695) -Fix [FS#4697]: mark addresses that could not be resolved as 'do not resolve anymore' as well, instead of trying to resolve them each and every time the address is accessed
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sat, 30 Jul 2011 10:28:52 +0000 |
parents | 49e5d88c92d7 |
children | 85ca3c066925 |
files | src/network/core/address.cpp src/network/core/address.h src/network/network_udp.cpp |
diffstat | 3 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -132,6 +132,7 @@ * that means "don't care whether it is SOCK_STREAM or SOCK_DGRAM". */ this->Resolve(this->address.ss_family, SOCK_STREAM, AI_ADDRCONFIG, NULL, ResolveLoopProc); + this->resolved = true; } return &this->address; }
--- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -33,6 +33,7 @@ char hostname[NETWORK_HOSTNAME_LENGTH]; ///< The hostname int address_length; ///< The length of the resolved address sockaddr_storage address; ///< The resolved address + bool resolved; ///< Whether the address has been (tried to be) resolved /** * Helper function to resolve something to a socket. @@ -50,7 +51,8 @@ */ NetworkAddress(struct sockaddr_storage &address, int address_length) : address_length(address_length), - address(address) + address(address), + resolved(address_length != 0) { *this->hostname = '\0'; } @@ -61,7 +63,8 @@ * @param address_length The length of the address. */ NetworkAddress(sockaddr *address, int address_length) : - address_length(address_length) + address_length(address_length), + resolved(address_length != 0) { *this->hostname = '\0'; memset(&this->address, 0, sizeof(this->address)); @@ -75,7 +78,8 @@ * @param family the address family */ NetworkAddress(const char *hostname = "", uint16 port = 0, int family = AF_UNSPEC) : - address_length(0) + address_length(0), + resolved(false) { /* Also handle IPv6 bracket enclosed hostnames */ if (StrEmpty(hostname)) hostname = ""; @@ -123,7 +127,7 @@ */ bool IsResolved() const { - return this->address_length != 0; + return this->resolved; } bool IsFamily(int family);
--- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -491,9 +491,9 @@ /* Clear item in gamelist */ NetworkGameList *item = CallocT<NetworkGameList>(1); - item->address = *info; info->GetAddressAsString(item->info.server_name, lastof(item->info.server_name)); strecpy(item->info.hostname, info->GetHostname(), lastof(item->info.hostname)); + item->address = *info; item->manually = info->manually; NetworkGameListAddItemDelayed(item);