Revert "Only fall back to AF_INET searches when looking for AF_UNSPEC addresses"
authorJakub Hrozek <jhrozek@redhat.com>
Wed, 15 Jun 2011 08:56:05 +0000 (10:56 +0200)
committerJakub Hrozek <jhrozek@redhat.com>
Wed, 15 Jun 2011 08:56:05 +0000 (10:56 +0200)
This reverts commit b5823d65706af687c0e5110af8f0cfdcd068997d.

This patch was not reviewed properly before pushing

ares_gethostbyname.c

index ad89dc27bf810c57f0324da46d3da31c2bc04a44..72f8f8b91fe3cd82f0c40b169a482e70f4bc6f7e 100644 (file)
@@ -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) &&
-               hquery->want_family == AF_UNSPEC) {
+          if (status == ARES_ENODATA || status == ARES_EBADRESP) {
             /* 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. */
+               looking up A instead.  We should possibly limit this
+               attempt-next logic to AF_UNSPEC lookups only. */
             hquery->sent_family = AF_INET;
             ares_search(hquery->channel, hquery->name, C_IN, T_A,
                         host_callback, hquery);
@@ -210,10 +210,11 @@ 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 &&
-            hquery->want_family == AF_UNSPEC))
+            status == ARES_ETIMEOUT) && hquery->sent_family == AF_INET6)
     {
-      /* The AAAA query yielded no useful result.  Now look up an A instead. */
+      /* 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. */
       hquery->sent_family = AF_INET;
       ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
                   hquery);