diff options
| -rw-r--r-- | lib/asyn-ares.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/asyn-ares.c b/lib/asyn-ares.c index 392e50a08..081667dc3 100644 --- a/lib/asyn-ares.c +++ b/lib/asyn-ares.c @@ -590,8 +590,19 @@ CURLcode Curl_set_dns_servers(struct SessionHandle *data,                                char *servers)  {    CURLcode result = CURLE_NOT_BUILT_IN; +  int ares_result; + +  /* If server is NULL or empty, this would purge all DNS servers +   * from ares library, which will cause any and all queries to fail. +   * So, just return OK if none are configured and don't actually make +   * any changes to c-ares.  This lets c-ares use it's defaults, which +   * it gets from the OS (for instance from /etc/resolv.conf on Linux). +   */ +  if(!(servers && servers[0])) +    return CURLE_OK; +  #if (ARES_VERSION >= 0x010704) -  int ares_result = ares_set_servers_csv(data->state.resolver, servers); +  ares_result = ares_set_servers_csv(data->state.resolver, servers);    switch(ares_result) {    case ARES_SUCCESS:      result = CURLE_OK; @@ -608,7 +619,7 @@ CURLcode Curl_set_dns_servers(struct SessionHandle *data,    }  #else /* too old c-ares version! */    (void)data; -  (void)servers; +  (void)(ares_result);  #endif    return result;  }  | 
