summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES5
-rw-r--r--RELEASE-NOTES3
-rw-r--r--ares_init.c15
3 files changed, 16 insertions, 7 deletions
diff --git a/CHANGES b/CHANGES
index e7b3b8d..c61e319 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,10 @@
Changelog for the c-ares project
+* 3 Aug 2009 (Daniel Stenberg)
+- Joshua Kwan fixed the init routine to fill in the defaults for stuff that
+ fails to get inited by other means. This fixes a case of when the c-ares
+ init fails when internet access is fone.
+
* 14 Jul 2009 (Guenter Knauf)
- renamed generated config.h to ares_config.h to avoid any future clashes
with config.h from other projects.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index c1e23d6..c144d1c 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -16,9 +16,10 @@ Fixed:
ARES_EBADNAME if the name in the response failed to decode
o only expose/export symbols starting with 'ares_'
o fix \Device\TCP handle leaks triggered by buggy iphlpapi.dll
+ o init without internet gone no longer fails
Thanks go to these friendly people for their efforts and contributions:
- Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny
+ Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny, Joshua Kwan
Have fun!
diff --git a/ares_init.c b/ares_init.c
index bd29fe9..e04cfdd 100644
--- a/ares_init.c
+++ b/ares_init.c
@@ -201,12 +201,15 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
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)));
- }
+
+ /*
+ * No matter what failed or succeeded, seed defaults to provide
+ * useful behavior for things that we missed.
+ */
+ status = init_by_defaults(channel);
+ if (status != ARES_SUCCESS)
+ DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
+ ares_strerror(status)));
/* Generate random key */