mirror of
https://github.com/curl/curl.git
synced 2024-11-27 05:50:21 +08:00
AIX 4.3 or later should use gethostbyname() and not the *_r() version.
This commit is contained in:
parent
17962b3d2e
commit
8d5ac8b43c
16
lib/hostip.c
16
lib/hostip.c
@ -696,6 +696,19 @@ static Curl_addrinfo *my_getaddrinfo(struct SessionHandle *data,
|
|||||||
#ifdef HAVE_GETHOSTBYNAME_R_3
|
#ifdef HAVE_GETHOSTBYNAME_R_3
|
||||||
/* AIX, Digital Unix, HPUX 10, more? */
|
/* AIX, Digital Unix, HPUX 10, more? */
|
||||||
|
|
||||||
|
/* For AIX 4.3 or later, we don't use gethostbyname_r() at all, because of
|
||||||
|
the plain fact that it does not return unique full buffers on each
|
||||||
|
call, but instead several of the pointers in the hostent structs will
|
||||||
|
point to the same actual data! This have the unfortunate down-side that
|
||||||
|
our caching system breaks down horribly. Luckily for us though, AIX 4.3
|
||||||
|
and more recent versions have a completely thread-safe libc where all
|
||||||
|
the data is stored in thread-specific memory areas making calls to the
|
||||||
|
plain old gethostbyname() work fine even for multi-threaded programs.
|
||||||
|
|
||||||
|
This AIX 4.3 or later detection is all made in the configure script.
|
||||||
|
|
||||||
|
Troels Walsted Hansen helped us work this out on March 3rd, 2003. */
|
||||||
|
|
||||||
if(CURL_NAMELOOKUP_SIZE >=
|
if(CURL_NAMELOOKUP_SIZE >=
|
||||||
(sizeof(struct hostent)+sizeof(struct hostent_data)))
|
(sizeof(struct hostent)+sizeof(struct hostent_data)))
|
||||||
|
|
||||||
@ -705,7 +718,8 @@ static Curl_addrinfo *my_getaddrinfo(struct SessionHandle *data,
|
|||||||
|
|
||||||
ret = gethostbyname_r(hostname,
|
ret = gethostbyname_r(hostname,
|
||||||
(struct hostent *)buf,
|
(struct hostent *)buf,
|
||||||
(struct hostent_data *)((char *)buf + sizeof(struct hostent)));
|
(struct hostent_data *)((char *)buf +
|
||||||
|
sizeof(struct hostent)));
|
||||||
else
|
else
|
||||||
ret = -1; /* failure, too smallish buffer size */
|
ret = -1; /* failure, too smallish buffer size */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user