Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article addresses an issue in which you receive a WSAHOST_NOT_FOUND error when the GetAddrInfo
is called after another call for the AF_INET6 family.
Applies to: Windows 10 - all editions
Original KB number: 4057932
Symptoms
Consider the following scenario:
- You use a flat name without any suffixes to run a query for a host name.
- You have a suffix search list, and this host name is resolvable through one of these suffixes other than the last suffix in the list.
- You run
GetAddrInfo
for the AF_INET6 family first, and then you run that command for the AF_INET family.
In this scenario, the function can't resolve the provided host name, and you receive the " WSAHOST_NOT_FOUND (11001)" error message.
For example, you have the following environment:
- Suffix Search List:
contoso.com
,foo.contoso.com
,bar.contoso.com
- Host name trying to be resolved: test
- Host DNS A record present in:
foo.contoso.com
When you try to run the following sample code, the calls fail with the 11001 error.
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = 0;
hints.ai_family = AF_INET6;
getaddrinfo("test", NULL, &hints, &res)
hints.ai_family = AF_INET;
getaddrinfo("test", NULL, &hints, &res)
Workaround
This issue can be avoided by using the following methods. The issue will not occur if you:
- Use AF_UNSPEC for the family and let our code determine the A/AAAA results for you.
- Put the suffix with the matching host A record as the last entry in the suffix search list.
- Disable negative caching on the DNS client.
- Pass the fully qualified host name to be resolved.
The first option is the recommended method, as there's usually no need to do the calls on a per family basis, and Windows is much better optimized to return the best possible set of results for both families.