curl-library
[PATCH] Add support for setting name servers
From: Jason Glasgow <jglasgow_at_chromium.org>
Date: Tue, 12 Apr 2011 11:34:28 -0400
Date: Tue, 12 Apr 2011 11:34:28 -0400
--- docs/libcurl/curl_easy_setopt.3 | 12 ++++++++++++ include/curl/curl.h | 3 +++ lib/url.c | 24 ++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 0 deletions(-) diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3 index 31464bf..e072f51 100644 --- a/docs/libcurl/curl_easy_setopt.3 +++ b/docs/libcurl/curl_easy_setopt.3 @@ -2045,6 +2045,18 @@ resolves, by including a string in the linked list that uses the format and port number must exactly match what was already added previously. (Added in 7.21.3) +.IP CURLOPT_DNS_SERVERS + +Set the list of DNS servers to be used instead of the system default. +The format of the dns servers option is: + +host[:port][,host[:port]]... + +For example: + +192.168.1.100,192.168.1.101,3.4.5.6 + +(Added in 7.22.1) .SH SSL and SECURITY OPTIONS .IP CURLOPT_SSLCERT Pass a pointer to a zero terminated string as parameter. The string should be diff --git a/include/curl/curl.h b/include/curl/curl.h index f4aa17f..8f82348 100644 --- a/include/curl/curl.h +++ b/include/curl/curl.h @@ -1486,6 +1486,9 @@ typedef enum { /* allow GSSAPI credential delegation */ CINIT(GSSAPI_DELEGATION, LONG, 210), + /* Set the name servers to use for DNS resolution */ + CINIT(DNS_SERVERS, OBJECTPOINT, 211), + CURLOPT_LASTENTRY /* the last unused */ } CURLoption; diff --git a/lib/url.c b/lib/url.c index 4bc82a6..4d15139 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2531,6 +2531,30 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option, data->set.ssl.authtype = CURL_TLSAUTH_NONE; break; #endif + case CURLOPT_DNS_SERVERS: +#if defined(USE_ARES) && (ARES_VERSION >= 0x010704) + { + int ares_result; + ares_result = ares_set_servers_csv(data->state.resolver, + va_arg(param, char *)); + switch(ares_result) { + case ARES_SUCCESS: + break; + case ARES_ENOMEM: + result = CURLE_OUT_OF_MEMORY; + break; + case ARES_ENOTINITIALIZED: + case ARES_ENODATA: + case ARES_EBADSTR: + default: + result = CURLE_BAD_FUNCTION_ARGUMENT; + break; + } +#else + result = CURLE_NOT_BUILT_IN; +#endif + break; + default: /* unknown tag and its companion, just ignore: */ result = CURLE_UNKNOWN_OPTION; -- 1.7.3.1 ------------------------------------------------------------------- List admin: http://cool.haxx.se/list/listinfo/curl-library Etiquette: http://curl.haxx.se/mail/etiquette.htmlReceived on 2001-09-17