From d2fe8c2842c7930d5fca4f10bad276b706393946 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 11 Apr 2021 11:32:31 +0200 Subject: Change: warn the user about the resolving of an address being extra very slow --- src/network/core/address.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/network/core') diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index a45bd4914..8c6909438 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -239,7 +239,18 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList * 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(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)); -- cgit v1.2.3-70-g09d2