Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Only fall back to AF_INET searches when looking for AF_UNSPEC addresses

  • Loading branch information...
commit bb4096effef7f0001339669a4abf9448ec1f8743 1 parent 1b9c2a3
Jakub Hrozek authored
Showing with 6 additions and 7 deletions.
  1. +6 −7 ares_gethostbyname.c
View
13 ares_gethostbyname.c
@@ -194,11 +194,11 @@ static void host_callback(void *arg, int status, int timeouts,
else if (hquery->sent_family == AF_INET6)
{
status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL);
- if (status == ARES_ENODATA || status == ARES_EBADRESP) {
+ if ((status == ARES_ENODATA || status == ARES_EBADRESP) &&
+ hquery->want_family == AF_UNSPEC) {
/* The query returned something but either there were no AAAA
records (e.g. just CNAME) or the response was malformed. Try
- looking up A instead. We should possibly limit this
- attempt-next logic to AF_UNSPEC lookups only. */
+ looking up A instead. */
hquery->sent_family = AF_INET;
ares_search(hquery->channel, hquery->name, C_IN, T_A,
host_callback, hquery);
@@ -210,11 +210,10 @@ static void host_callback(void *arg, int status, int timeouts,
end_hquery(hquery, status, host);
}
else if ((status == ARES_ENODATA || status == ARES_EBADRESP ||
- status == ARES_ETIMEOUT) && hquery->sent_family == AF_INET6)
+ status == ARES_ETIMEOUT) && (hquery->sent_family == AF_INET6 &&
+ hquery->want_family == AF_UNSPEC))
{
- /* The AAAA query yielded no useful result. Now look up an A instead.
- We should possibly limit this attempt-next logic to AF_UNSPEC lookups
- only. */
+ /* The AAAA query yielded no useful result. Now look up an A instead. */
hquery->sent_family = AF_INET;
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
hquery);
Please sign in to comment.
Something went wrong with that request. Please try again.