Changeset - r25171:9312bd335068
[Not reviewed]
master
0 1 0
Rubidium - 3 years ago 2021-04-11 09:32:31
rubidium@openttd.org
Change: warn the user about the resolving of an address being extra very slow
1 file changed with 11 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/network/core/address.cpp
Show inline comments
 
@@ -239,7 +239,18 @@ SOCKET NetworkAddress::Resolve(int famil
 
		strecpy(this->hostname, fam == AF_INET ? "0.0.0.0" : "::", lastof(this->hostname));
 
	}
 

	
 
	static bool _resolve_timeout_error_message_shown = false;
 
	auto start = std::chrono::steady_clock::now();
 
	int e = getaddrinfo(StrEmpty(this->hostname) ? nullptr : this->hostname, port_name, &hints, &ai);
 
	auto end = std::chrono::steady_clock::now();
 
	std::chrono::seconds duration = std::chrono::duration_cast<std::chrono::seconds>(end - start);
 
	if (!_resolve_timeout_error_message_shown && duration >= std::chrono::seconds(5)) {
 
		DEBUG(net, 0, "getaddrinfo for hostname \"%s\", port %s, address family %s and socket type %s took %i seconds",
 
				this->hostname, port_name, AddressFamilyAsString(family), SocketTypeAsString(socktype), (int)duration.count());
 
		DEBUG(net, 0, "  this is likely an issue in the DNS name resolver's configuration causing it to time out");
 
		_resolve_timeout_error_message_shown = true;
 
	}
 

	
 

	
 
	if (reset_hostname) strecpy(this->hostname, "", lastof(this->hostname));
 

	
0 comments (0 inline, 0 general)