/* if we have not found anything, report the proper
* CURLE_COULDNT_RESOLVE_* code */
if(!result && !data->state.async.dns) {
- result = Curl_resolver_error(data);
- if(ares->ares_status != ARES_SUCCESS) {
- const char *msg;
- switch(ares->ares_status) {
- case ARES_ECONNREFUSED:
- msg = "connection to DNS server refused";
- break;
- case ARES_ETIMEOUT:
- msg = "query to DNS server timed out";
- break;
- case ARES_ENOTFOUND:
- msg = "DNS server did not find the address";
- break;
- case ARES_EREFUSED:
- msg = "DNS server refused query";
- break;
- default:
- msg = "resolve failed";
- break;
- }
- CURL_TRC_DNS(data, "asyn-ares: %s (error %d)", msg, ares->ares_status);
-#if ARES_VERSION >= 0x011800 /* >= v1.24.0 */
- CURL_TRC_DNS(data, "asyn-ares config: %s",
- ares_get_servers_csv(ares->channel));
-#endif
- }
+ const char *msg = NULL;
+ if(ares->ares_status != ARES_SUCCESS)
+ msg = ares_strerror(ares->ares_status);
+ result = Curl_resolver_error(data, msg);
}
if(result)
ares->ares_status = ARES_ENOTFOUND;
ares->result = CURLE_OK;
+#if ARES_VERSION >= 0x011800 /* >= v1.24.0 */
+ CURL_TRC_DNS(data, "asyn-ares: servers=%s",
+ ares_get_servers_csv(ares->channel));
+#endif
+
#ifdef HAVE_CARES_GETADDRINFO
{
struct ares_addrinfo_hints hints;
}
if(!result && !data->state.async.dns)
- result = Curl_resolver_error(data);
+ result = Curl_resolver_error(data, NULL);
if(result)
Curl_resolv_unlink(data, &data->state.async.dns);
*dns = data->state.async.dns;
if(data->conn->bits.doh) {
result = Curl_doh_is_resolved(data, dns);
if(result)
- Curl_resolver_error(data);
+ Curl_resolver_error(data, NULL);
}
else
#endif
*/
#ifdef USE_CURL_ASYNC
-CURLcode Curl_resolver_error(struct Curl_easy *data)
+CURLcode Curl_resolver_error(struct Curl_easy *data, const char *detail)
{
struct connectdata *conn = data->conn;
const char *host_or_proxy = "host";
}
#endif
- failf(data, "Could not resolve %s: %s", host_or_proxy, name);
+ failf(data, "Could not resolve %s: %s%s%s%s", host_or_proxy, name,
+ detail ? " (" : "", detail ? detail : "", detail ? ")" : "");
return result;
}
#endif /* USE_CURL_ASYNC */
CURLcode Curl_resolv_pollset(struct Curl_easy *data,
struct easy_pollset *ps);
-CURLcode Curl_resolver_error(struct Curl_easy *data);
+CURLcode Curl_resolver_error(struct Curl_easy *data, const char *detail);
#ifdef CURLRES_SYNCH
/*