mirror of
https://github.com/moparisthebest/curl
synced 2024-08-13 17:03:50 -04:00
Another glibc resolve name fix
This commit is contained in:
parent
60ef75f2ee
commit
25613503cb
7
CHANGES
7
CHANGES
@ -7,6 +7,13 @@
|
|||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
|
||||||
|
Daniel (28 October)
|
||||||
|
- Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
|
||||||
|
function for some specific versions (reported on 2.2.5 and 2.1.1), and
|
||||||
|
provided a fix. On Linux machines with these glibc versioins, non-ipv6
|
||||||
|
builds of libcurl would often fail to resolve perfectly resolvable host
|
||||||
|
names.
|
||||||
|
|
||||||
Daniel (26 October)
|
Daniel (26 October)
|
||||||
- James Bursa found out that curl_msnprintf() could write the trailing
|
- James Bursa found out that curl_msnprintf() could write the trailing
|
||||||
zero-byte outside its given buffer size. This could happen if you generated
|
zero-byte outside its given buffer size. This could happen if you generated
|
||||||
|
@ -24,6 +24,7 @@ This release includes the following changes:
|
|||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
|
o added work-around for a name resolve problem on some glibc versions
|
||||||
o a rare ERRORBUFFER single-byte overflow was fixed
|
o a rare ERRORBUFFER single-byte overflow was fixed
|
||||||
o HTTP-resuming an already downloaded file works better
|
o HTTP-resuming an already downloaded file works better
|
||||||
o builds better on Solaris 8+ with gcc
|
o builds better on Solaris 8+ with gcc
|
||||||
@ -83,6 +84,6 @@ advice from friends like these:
|
|||||||
Jeremy Friesner, Florian Schoppmann, Neil Dunbar, Frank Ticheler, Lachlan
|
Jeremy Friesner, Florian Schoppmann, Neil Dunbar, Frank Ticheler, Lachlan
|
||||||
O'Dea, Dirk Manske, Domenico Andreoli, Gisle Vanem, Kimmo Kinnunen, Andrew
|
O'Dea, Dirk Manske, Domenico Andreoli, Gisle Vanem, Kimmo Kinnunen, Andrew
|
||||||
Fuller, Georg Horn, Andrés García, Dylan Ellicott, Kevin Roth, David Hull,
|
Fuller, Georg Horn, Andrés García, Dylan Ellicott, Kevin Roth, David Hull,
|
||||||
James Bursa
|
James Bursa, Dan C
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
21
lib/hostip.c
21
lib/hostip.c
@ -983,12 +983,27 @@ static Curl_addrinfo *my_getaddrinfo(struct connectdata *conn,
|
|||||||
of buffer size (step_size grows beyond CURL_NAMELOOKUP_SIZE).
|
of buffer size (step_size grows beyond CURL_NAMELOOKUP_SIZE).
|
||||||
|
|
||||||
If anyone has a better fix, please tell us!
|
If anyone has a better fix, please tell us!
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
|
On October 23rd 2003, Dan C dug up more details on the mysteries of
|
||||||
|
gethostbyname_r() in glibc:
|
||||||
|
|
||||||
|
In glibc 2.2.5 the interface is different (this has also been
|
||||||
|
discovered in glibc 2.1.1-6 as shipped by Redhat 6). What I can't
|
||||||
|
explain, is that tests performed on glibc 2.2.4-34 and 2.2.4-32
|
||||||
|
(shipped/upgraded by Redhat 7.2) don't show this behavior!
|
||||||
|
|
||||||
|
In this "buggy" version, the return code is -1 on error and 'errno'
|
||||||
|
is set to the ERANGE or EAGAIN code. Note that 'errno' is not a
|
||||||
|
thread-safe variable.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if((ERANGE == res) || (EAGAIN == res)) {
|
if(((ERANGE == res) || (EAGAIN == res)) ||
|
||||||
|
((res<0) && ((ERANGE == errno) || (EAGAIN == errno))))
|
||||||
step_size+=200;
|
step_size+=200;
|
||||||
continue;
|
else
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
} while(step_size <= CURL_NAMELOOKUP_SIZE);
|
} while(step_size <= CURL_NAMELOOKUP_SIZE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user