diff options
-rw-r--r-- | ares/CHANGES | 3 | ||||
-rw-r--r-- | ares/ares_process.c | 9 |
2 files changed, 9 insertions, 3 deletions
diff --git a/ares/CHANGES b/ares/CHANGES index 160489c64..4f28e3b4c 100644 --- a/ares/CHANGES +++ b/ares/CHANGES @@ -2,6 +2,9 @@ * September 22 2007 (Daniel Stenberg) +- Steinar H. Gunderson modified c-ares to now also do to DNS retries even when + TCP is used since there are several edge cases where it still makes sense. + - Brad House provided a fix for ares_save_options(): Apparently I overlooked something with the ares_save_options() where it diff --git a/ares/ares_process.c b/ares/ares_process.c index e8b9ef6fa..66007f0fb 100644 --- a/ares/ares_process.c +++ b/ares/ares_process.c @@ -504,9 +504,12 @@ static struct query *next_server(ares_channel channel, struct query *query, time } query->server = 0; - /* Only one try if we're using TCP. */ - if (query->using_tcp) - break; + /* You might think that with TCP we only need one try. However, + * even when using TCP, servers can time-out our connection just + * as we're sending a request, or close our connection because + * they die, or never send us a reply because they get wedged or + * tickle a bug that drops our request. + */ } return end_query(channel, query, query->error_status, NULL, 0); } |