Eliminate a unnecessary socket creation in Curl_getaddrinfo for an IPv4

address in an IPv6 capable libcurl.
This commit is contained in:
Dan Fandrich 2008-07-29 18:26:35 +00:00
parent a8baa05023
commit 248c2b9bf5

View File

@ -771,40 +771,41 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
struct addrinfo hints, *res; struct addrinfo hints, *res;
int error; int error;
char sbuf[NI_MAXSERV]; char sbuf[NI_MAXSERV];
curl_socket_t s;
int pf; int pf;
struct SessionHandle *data = conn->data; struct SessionHandle *data = conn->data;
*waitp = FALSE; /* default to synch response */ *waitp = FALSE; /* default to synch response */
/* see if we have an IPv6 stack */ /*
s = socket(PF_INET6, SOCK_DGRAM, 0); * Check if a limited name resolve has been requested.
if(s == CURL_SOCKET_BAD) { */
/* Some non-IPv6 stacks have been found to make very slow name resolves switch(data->set.ip_version) {
* when PF_UNSPEC is used, so thus we switch to a mere PF_INET lookup if case CURL_IPRESOLVE_V4:
* the stack seems to be a non-ipv6 one. */
pf = PF_INET; pf = PF_INET;
break;
case CURL_IPRESOLVE_V6:
pf = PF_INET6;
break;
default:
pf = PF_UNSPEC;
break;
} }
else {
/* This seems to be an IPv6-capable stack, use PF_UNSPEC for the widest
* possible checks. And close the socket again.
*/
sclose(s);
/* if (pf != PF_INET) {
* Check if a more limited name resolve has been requested. /* see if we have an IPv6 stack */
*/ curl_socket_t s = socket(PF_INET6, SOCK_DGRAM, 0);
switch(data->set.ip_version) { if(s == CURL_SOCKET_BAD) {
case CURL_IPRESOLVE_V4: /* 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. */
pf = PF_INET; pf = PF_INET;
break; }
case CURL_IPRESOLVE_V6: else {
pf = PF_INET6; /* This seems to be an IPv6-capable stack, use PF_UNSPEC for the widest
break; * possible checks. And close the socket again.
default: */
pf = PF_UNSPEC; sclose(s);
break;
} }
} }