aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2007-09-22 21:04:16 +0000
committerDaniel Stenberg <daniel@haxx.se>2007-09-22 21:04:16 +0000
commit0f89a2e639f002df48bd43726818410439e24dd4 (patch)
tree41f3af6996115df913cbc9b386831fe523802925
parent05b26e7566b9788fcdecda3c49e0b0ca1f7d25ec (diff)
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.
-rw-r--r--ares/CHANGES3
-rw-r--r--ares/ares_process.c9
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);
}