Merge pull request #220 from AndrejMitrovic/add-timeout

Add optional timeout parameter to resolveHost
This commit is contained in:
Sönke Ludwig 2020-08-19 10:37:15 +02:00 committed by GitHub
commit 11a42dcc08
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -27,12 +27,12 @@ import core.time : Duration;
Setting use_dns to false will only allow IP address strings but also guarantees
that the call will not block.
*/
NetworkAddress resolveHost(string host, AddressFamily address_family = AddressFamily.UNSPEC, bool use_dns = true)
NetworkAddress resolveHost(string host, AddressFamily address_family = AddressFamily.UNSPEC, bool use_dns = true, Duration timeout = Duration.max)
{
return resolveHost(host, cast(ushort)address_family, use_dns);
return resolveHost(host, cast(ushort)address_family, use_dns, timeout);
}
/// ditto
NetworkAddress resolveHost(string host, ushort address_family, bool use_dns = true)
NetworkAddress resolveHost(string host, ushort address_family, bool use_dns = true, Duration timeout = Duration.max)
{
import std.socket : parseAddress;
version (Windows) import core.sys.windows.winsock2 : sockaddr_in, sockaddr_in6;
@ -66,7 +66,7 @@ NetworkAddress resolveHost(string host, ushort address_family, bool use_dns = tr
}
);
asyncAwaitAny!(true, waitable);
asyncAwaitAny!(true, waitable)(timeout);
enforce(success, "Failed to lookup host '"~host~"'.");
return res;