add debug messages for initialization failures
authorYang Tse <yangsita@gmail.com>
Fri, 2 Feb 2007 16:01:55 +0000 (16:01 +0000)
committerYang Tse <yangsita@gmail.com>
Fri, 2 Feb 2007 16:01:55 +0000 (16:01 +0000)
ares_init.c

index e837190..1fd43f4 100644 (file)
@@ -91,7 +91,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
                       int optmask)
 {
   ares_channel channel;
-  int i, status;
+  int i;
+  int status = ARES_SUCCESS;
   struct server_state *server;
   struct timeval tv;
 
@@ -106,8 +107,10 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
 #endif
 
   channel = malloc(sizeof(struct ares_channeldata));
-  if (!channel)
+  if (!channel) {
+    *channelptr = NULL;
     return ARES_ENOMEM;
+  }
 
   /* Set everything to distinguished values so we know they haven't
    * been set yet.
@@ -132,13 +135,31 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
   /* Initialize configuration by each of the four sources, from highest
    * precedence to lowest.
    */
+
+  if (status == ARES_SUCCESS) {
   status = init_by_options(channel, options, optmask);
-  if (status == ARES_SUCCESS)
+    if (status != ARES_SUCCESS)
+      DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n",
+                     ares_strerror(status)));
+  }
+  if (status == ARES_SUCCESS) {
     status = init_by_environment(channel);
-  if (status == ARES_SUCCESS)
+    if (status != ARES_SUCCESS)
+      DEBUGF(fprintf(stderr, "Error: init_by_environment failed: %s\n",
+                     ares_strerror(status)));
+  }
+  if (status == ARES_SUCCESS) {
     status = init_by_resolv_conf(channel);
-  if (status == ARES_SUCCESS)
+    if (status != ARES_SUCCESS)
+      DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n",
+                     ares_strerror(status)));
+  }
+  if (status == ARES_SUCCESS) {
     status = init_by_defaults(channel);
+    if (status != ARES_SUCCESS)
+      DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
+                     ares_strerror(status)));
+  }
   if (status != ARES_SUCCESS)
     {
       /* Something failed; clean up memory we may have allocated. */