mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
CURLOPT_DNS_SERVERS: set name servers if possible
This commit is contained in:
parent
967b2f87a8
commit
8d0a504f0d
@ -2045,6 +2045,20 @@ resolves, by including a string in the linked list that uses the format
|
|||||||
and port number must exactly match what was already added previously.
|
and port number must exactly match what was already added previously.
|
||||||
|
|
||||||
(Added in 7.21.3)
|
(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
|
||||||
|
|
||||||
|
This option requires that libcurl was built with a resolver backend that
|
||||||
|
supports this operation. The c-ares backend is the only such one.
|
||||||
|
|
||||||
|
(Added in 7.24.0)
|
||||||
.SH SSL and SECURITY OPTIONS
|
.SH SSL and SECURITY OPTIONS
|
||||||
.IP CURLOPT_SSLCERT
|
.IP CURLOPT_SSLCERT
|
||||||
Pass a pointer to a zero terminated string as parameter. The string should be
|
Pass a pointer to a zero terminated string as parameter. The string should be
|
||||||
|
@ -1486,6 +1486,9 @@ typedef enum {
|
|||||||
/* allow GSSAPI credential delegation */
|
/* allow GSSAPI credential delegation */
|
||||||
CINIT(GSSAPI_DELEGATION, LONG, 210),
|
CINIT(GSSAPI_DELEGATION, LONG, 210),
|
||||||
|
|
||||||
|
/* Set the name servers to use for DNS resolution */
|
||||||
|
CINIT(DNS_SERVERS, OBJECTPOINT, 211),
|
||||||
|
|
||||||
CURLOPT_LASTENTRY /* the last unused */
|
CURLOPT_LASTENTRY /* the last unused */
|
||||||
} CURLoption;
|
} CURLoption;
|
||||||
|
|
||||||
|
@ -600,4 +600,30 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
|
|||||||
}
|
}
|
||||||
return NULL; /* no struct yet */
|
return NULL; /* no struct yet */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CURLcode Curl_set_dns_servers(struct SessionHandle *data,
|
||||||
|
char *servers)
|
||||||
|
{
|
||||||
|
CURLcode result = CURLE_NOT_BUILT_IN;
|
||||||
|
#if (ARES_VERSION >= 0x010704)
|
||||||
|
int ares_result = ares_set_servers_csv(data->state.resolver, servers);
|
||||||
|
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 /* too old c-ares version! */
|
||||||
|
(void)data;
|
||||||
|
(void)servers;
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
|
}
|
||||||
#endif /* CURLRES_ARES */
|
#endif /* CURLRES_ARES */
|
||||||
|
@ -696,4 +696,13 @@ Curl_addrinfo *Curl_resolver_getaddrinfo(struct connectdata *conn,
|
|||||||
|
|
||||||
#endif /* !HAVE_GETADDRINFO */
|
#endif /* !HAVE_GETADDRINFO */
|
||||||
|
|
||||||
|
CURLcode Curl_set_dns_servers(struct SessionHandle *data,
|
||||||
|
char *servers)
|
||||||
|
{
|
||||||
|
(void)data;
|
||||||
|
(void)servers;
|
||||||
|
return CURLE_NOT_BUILT_IN;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CURLRES_THREADED */
|
#endif /* CURLRES_THREADED */
|
||||||
|
@ -195,4 +195,9 @@ Curl_cache_addr(struct SessionHandle *data, Curl_addrinfo *addr,
|
|||||||
extern sigjmp_buf curl_jmpenv;
|
extern sigjmp_buf curl_jmpenv;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function provided by the resolver backend to set DNS servers to use.
|
||||||
|
*/
|
||||||
|
CURLcode Curl_set_dns_servers(struct SessionHandle *data, char *servers);
|
||||||
|
|
||||||
#endif /* HEADER_CURL_HOSTIP_H */
|
#endif /* HEADER_CURL_HOSTIP_H */
|
||||||
|
@ -66,5 +66,16 @@
|
|||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
#ifdef CURLRES_SYNCH
|
#ifdef CURLRES_SYNCH
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function provided by the resolver backend to set DNS servers to use.
|
||||||
|
*/
|
||||||
|
CURLcode Curl_set_dns_servers(struct SessionHandle *data,
|
||||||
|
char *servers)
|
||||||
|
{
|
||||||
|
(void)data;
|
||||||
|
(void)servers;
|
||||||
|
return CURLE_NOT_BUILT_IN;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* truly sync */
|
#endif /* truly sync */
|
||||||
|
@ -2531,6 +2531,10 @@ CURLcode Curl_setopt(struct SessionHandle *data, CURLoption option,
|
|||||||
data->set.ssl.authtype = CURL_TLSAUTH_NONE;
|
data->set.ssl.authtype = CURL_TLSAUTH_NONE;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case CURLOPT_DNS_SERVERS:
|
||||||
|
result = Curl_set_dns_servers(data, va_arg(param, char *));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* unknown tag and its companion, just ignore: */
|
/* unknown tag and its companion, just ignore: */
|
||||||
result = CURLE_UNKNOWN_OPTION;
|
result = CURLE_UNKNOWN_OPTION;
|
||||||
|
Loading…
Reference in New Issue
Block a user