Modify `e_gethostbyname_r()' so that it doesn't report an error if the

5-argument `gethostbyname_r()' returns a non-NULL hostent and a
nonzero herr.

This fixes the "Cannot resolve localhost" error on GNU/Linux with libc
2.2.x.

svn path=/trunk/; revision=9888
This commit is contained in:
Ettore Perazzoli
2001-05-19 12:38:39 +00:00
parent 040905c9a2
commit e2edef6e5e
2 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,14 @@
2001-05-19 Ettore Perazzoli <ettore@ximian.com>
* e-host-utils.c (e_gethostbyname_r)
[HAVE_GETHOSTBYNAME_R && GETHOSTBYNAME_R_FIVE_ARGS]: Set `*herr'
to zero if the function returns a non-NULL pointer to the hostent.
According to the docs, a returned non-NULL hostent always means
"no error" no matter what the returned value of `herr' is. [And
in fact, at least on libc 2.2.3, trying to resolve `localhost'
sets herr to `HOST_NOT_FOUND' even if the name is resolved
correctly and the returned hostent is non-NULL.]
2001-05-16 Dan Winship <danw@ximian.com>
* e-html-utils.c (e_text_to_html_full): add

View File

@ -57,7 +57,12 @@ e_gethostbyname_r (const char *name, struct hostent *host,
return errno;
#else
struct hostent *hp;
return gethostbyname_r(name, host, buf, buflen, &hp, herr);
int retval;
retval = gethostbyname_r(name, host, buf, buflen, &hp, herr);
if (hp != NULL)
*herr = 0;
return retval;
#endif
#else
int i;