]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
asyn-ares: reduce timeout to 2000ms
authorDaniel Stenberg <daniel@haxx.se>
Mon, 28 Aug 2023 14:07:34 +0000 (16:07 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 29 Aug 2023 08:40:57 +0000 (10:40 +0200)
When UDP packets get lost this makes for slightly faster retries. This
lower timeout is used by @c-ares itself by default starting next
release.

Closes #11753

lib/asyn-ares.c

index 3e0e94968163545864293be42f50f2e1e84c147a..e73e41dab9fe35a3a48ecfc1d24d6acbed363a82 100644 (file)
@@ -110,7 +110,7 @@ struct thread_data {
 };
 
 /* How long we are willing to wait for additional parallel responses after
-   obtaining a "definitive" one.
+   obtaining a "definitive" one. For old c-ares without getaddrinfo.
 
    This is intended to equal the c-ares default timeout.  cURL always uses that
    default value.  Unfortunately, c-ares doesn't expose its default timeout in
@@ -120,6 +120,8 @@ struct thread_data {
  */
 #define HAPPY_EYEBALLS_DNS_TIMEOUT 5000
 
+#define CARES_TIMEOUT_PER_ATTEMPT 2000
+
 /*
  * Curl_resolver_global_init() - the generic low-level asynchronous name
  * resolve API.  Called from curl_global_init() to initialize global resolver
@@ -173,6 +175,9 @@ CURLcode Curl_resolver_init(struct Curl_easy *easy, void **resolver)
   int optmask = ARES_OPT_SOCK_STATE_CB;
   options.sock_state_cb = sock_state_cb;
   options.sock_state_cb_data = easy;
+  options.timeout = CARES_TIMEOUT_PER_ATTEMPT;
+  optmask |= ARES_OPT_TIMEOUTMS;
+
   status = ares_init_options((ares_channel*)resolver, &options, optmask);
   if(status != ARES_SUCCESS) {
     if(status == ARES_ENOMEM)