When looking up in DNS and then in the hosts file, return the error code from DNS...
authorSteinar H. Gunderson <sesse@google.com>
Thu, 15 Nov 2007 09:16:48 +0000 (09:16 +0000)
committerSteinar H. Gunderson <sesse@google.com>
Thu, 15 Nov 2007 09:16:48 +0000 (09:16 +0000)
ares/ares_gethostbyname.c

index b96ac6b..8610cba 100644 (file)
@@ -57,7 +57,7 @@ struct host_query {
   int timeouts;
 };
 
-static void next_lookup(struct host_query *hquery, int status);
+static void next_lookup(struct host_query *hquery, int status_code);
 static void host_callback(void *arg, int status, int timeouts,
                           unsigned char *abuf, int alen);
 static void end_hquery(struct host_query *hquery, int status,
@@ -111,13 +111,14 @@ void ares_gethostbyname(ares_channel channel, const char *name, int family,
   hquery->timeouts = 0;
 
   /* Start performing lookups according to channel->lookups. */
-  next_lookup(hquery, ARES_SUCCESS);
+  next_lookup(hquery, ARES_ECONNREFUSED /* initial error code */);
 }
 
-static void next_lookup(struct host_query *hquery, int status)
+static void next_lookup(struct host_query *hquery, int status_code)
 {
   const char *p;
   struct hostent *host;
+  int status = status_code;
 
   for (p = hquery->remaining_lookups; *p; p++)
     {
@@ -142,6 +143,7 @@ static void next_lookup(struct host_query *hquery, int status)
               end_hquery(hquery, status, host);
               return;
             }
+          status = status_code;   /* Use original status code */
           break;
         }
     }