Skip to content
Snippets Groups Projects
Commit 68e8a0f0 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

asking for CURL_IPRESOLVE_V6 when ipv6 addresses can't be resolved will

now cause the resolve function to return NULL immediately
parent b23dbf9f
No related branches found
No related tags found
No related merge requests found
......@@ -761,6 +761,10 @@ static Curl_addrinfo *my_getaddrinfo(struct connectdata *conn,
*waitp = FALSE;
if(data->set.ip_version == CURL_IPRESOLVE_V6)
/* an ipv6 address was requested and we can't get/use one */
return NULL;
bufp = strdup(hostname);
if(bufp) {
......@@ -906,11 +910,17 @@ static Curl_addrinfo *my_getaddrinfo(struct connectdata *conn,
/* see if we have an IPv6 stack */
s = socket(PF_INET6, SOCK_DGRAM, 0);
if (s < 0)
if (s < 0) {
/* Some non-IPv6 stacks have been found to make very slow name resolves
* when PF_UNSPEC is used, so thus we switch to a mere PF_INET lookup if
* the stack seems to be a non-ipv6 one. */
if(data->set.ip_version == CURL_IPRESOLVE_V6)
/* an ipv6 address was requested and we can't get/use one */
return NULL;
pf = PF_INET;
}
else {
/* This seems to be an IPv6-capable stack, use PF_UNSPEC for the widest
* possible checks. And close the socket again.
......@@ -1120,6 +1130,10 @@ static Curl_addrinfo *my_getaddrinfo(struct connectdata *conn,
*waitp = 0; /* don't wait, we act synchronously */
if(data->set.ip_version == CURL_IPRESOLVE_V6)
/* an ipv6 address was requested and we can't get/use one */
return NULL;
in=inet_addr(hostname);
if (in != CURL_INADDR_NONE) {
struct in_addr *addrentry;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment