]> Zhao Yanbai Git Server - minix.git/commitdiff
Change default hostname resolution order
authorDavid van Moolenbroek <david@minix3.org>
Thu, 10 Jun 2010 11:14:36 +0000 (11:14 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Thu, 10 Jun 2010 11:14:36 +0000 (11:14 +0000)
Hostnames that contain at least one period, are now first attempted
to be resolved as FQDNs, before adding local domains is tried.

lib/libc/ip/res_query.c

index 2fa6ce2acd30dea0f31e57d51d713228264a6c8f..7f8f57456b42584417e2b49267190c2c795ba71e 100644 (file)
@@ -175,7 +175,17 @@ res_search(name, class, type, answer, anslen)
                return (res_query(cp, class, type, answer, anslen));
 
        /*
-        * We do at least one level of search if
+        * First try the name as fully-qualified, but only if it contained
+        * at least one dot (even trailing). This is purely a heuristic; we
+        * assume that any reasonable query about a top-level domain (for
+        * servers, SOA, etc) will not use res_search.
+        */
+       if (n && (ret = res_querydomain(name, (char *)NULL, class, type,
+           answer, anslen)) > 0)
+               return (ret);
+
+       /*
+        * If the FQDN lookup failed, we do at least one level of search if
         *      - there is no dot and RES_DEFNAME is set, or
         *      - there is at least one dot, there is no trailing dot,
         *        and RES_DNSRCH is set.
@@ -209,16 +219,6 @@ res_search(name, class, type, answer, anslen)
                    (_res.options & RES_DNSRCH) == 0)
                        break;
        }
-       /*
-        * If the search/default failed, try the name as fully-qualified,
-        * but only if it contained at least one dot (even trailing).
-        * This is purely a heuristic; we assume that any reasonable query
-        * about a top-level domain (for servers, SOA, etc) will not use
-        * res_search.
-        */
-       if (n && (ret = res_querydomain(name, (char *)NULL, class, type,
-           answer, anslen)) > 0)
-               return (ret);
        if (got_nodata)
                h_errno = NO_DATA;
        return (-1);