summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2007-02-02 16:01:55 +0000
committerYang Tse <yangsita@gmail.com>2007-02-02 16:01:55 +0000
commit6f872e206a9f4f0c71d07f4320e01284079b1f78 (patch)
tree396472a87bd6e06e207f85ec9e30383ad602354a
parent94f2d923fca94acf83e4b67154572147ac102188 (diff)
downloadc-ares-6f872e206a9f4f0c71d07f4320e01284079b1f78.tar.gz
c-ares-6f872e206a9f4f0c71d07f4320e01284079b1f78.tar.bz2
c-ares-6f872e206a9f4f0c71d07f4320e01284079b1f78.zip
add debug messages for initialization failures
-rw-r--r--ares_init.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/ares_init.c b/ares_init.c
index e837190..1fd43f4 100644
--- a/ares_init.c
+++ b/ares_init.c
@@ -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. */