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

Ling Thio pointed out that getaddrinfo() reverse-lookups ip-only names, and

this is an attempt to prevent it from doing that. affects ipv6-enabled only.
parent 62ff567c
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
Changelog Changelog
Daniel (18 August 2004)
- Ling Thio pointed out that when libcurl is built ipv6-enabled, it still did
reverse DNS lookups when fed with a numerical IP-address (like
http://127.0.0.1/), although it doesn't when built ipv6-disabled. libcurl
should never do reverse lookups.
Daniel (17 August 2004) Daniel (17 August 2004)
- Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an - Kjetil Jacobsen noticed that when transferring a file:// URL pointing to an
empty file, libcurl would return with the file still open. empty file, libcurl would return with the file still open.
......
...@@ -14,6 +14,9 @@ This release includes the following changes: ...@@ -14,6 +14,9 @@ This release includes the following changes:
This release includes the following bugfixes: This release includes the following bugfixes:
o no more reverse DNS lookups when getting ip-only address with ipv6-enabled
libcurl
o libcurl works better multi-threaded on AIX (when built with xlc)
o cookies over proxy didn't match the path properly o cookies over proxy didn't match the path properly
o MSVC makefile fixes to build better o MSVC makefile fixes to build better
o FTP response 530 on 'PASS' now sends back a better error message o FTP response 530 on 'PASS' now sends back a better error message
...@@ -25,6 +28,7 @@ Other curl-related news since the previous public release: ...@@ -25,6 +28,7 @@ Other curl-related news since the previous public release:
This release would not have looked like this without help, code, reports and This release would not have looked like this without help, code, reports and
advice from friends like these: advice from friends like these:
Casey O'Donnell, Roland Krikava, Alex Casey O'Donnell, Roland Krikava, Alex, Alexander Krasnostavsky, Kjetil
Jacobsen, Ling Thio
Thanks! (and sorry if I forgot to mention someone) Thanks! (and sorry if I forgot to mention someone)
/*************************************************************************** /***************************************************************************
* _ _ ____ _ * _ _ ____ _
* Project ___| | | | _ \| | * Project ___| | | | _ \| |
* / __| | | | |_) | | * / __| | | | |_) | |
* | (__| |_| | _ <| |___ * | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____| * \___|\___/|_| \_\_____|
* *
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al. * Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* This software is licensed as described in the file COPYING, which * This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms * you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html. * are also available at http://curl.haxx.se/docs/copyright.html.
* *
* You may opt to use, copy, modify, merge, publish, distribute and/or sell * You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is * copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file. * furnished to do so, under the terms of the COPYING file.
...@@ -208,9 +208,11 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, ...@@ -208,9 +208,11 @@ 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];
char addrbuf[128];
curl_socket_t s; curl_socket_t s;
int pf; int pf;
struct SessionHandle *data = conn->data; struct SessionHandle *data = conn->data;
int ai_flags;
*waitp=0; /* don't wait, we have the response now */ *waitp=0; /* don't wait, we have the response now */
...@@ -244,15 +246,22 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn, ...@@ -244,15 +246,22 @@ Curl_addrinfo *Curl_getaddrinfo(struct connectdata *conn,
break; break;
} }
} }
if(1 == inet_pton(pf, addrbuf, sizeof(addrbuf))) {
/* the given address is numerical only, prevent a reverse lookup */
ai_flags = AI_NUMERICHOST;
}
else
ai_flags = AI_CANONNAME;
memset(&hints, 0, sizeof(hints)); memset(&hints, 0, sizeof(hints));
hints.ai_family = pf; hints.ai_family = pf;
hints.ai_socktype = SOCK_STREAM; hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME; hints.ai_flags = ai_flags;
snprintf(sbuf, sizeof(sbuf), "%d", port); snprintf(sbuf, sizeof(sbuf), "%d", port);
error = getaddrinfo(hostname, sbuf, &hints, &res); error = getaddrinfo(hostname, sbuf, &hints, &res);
if (error) { if (error) {
infof(data, "getaddrinfo(3) failed for %s:%d\n", hostname, port); infof(data, "getaddrinfo(3) failed for %s:%d\n", hostname, port);
return NULL; return NULL;
} }
......
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