2003-09-19 Jeffrey Stedfast * e-host-utils.c (e_gethostbyaddr_r): Work around a bug in glibc 2.3.2's gethostbyaddr_r() implementation. Index: evolution/e-util/e-host-utils.c diff -u evolution/e-util/e-host-utils.c:1.14.4.1 evolution/e-util/e-host-utils.c:1.14.4.2 --- evolution/e-util/e-host-utils.c:1.14.4.1 Mon Sep 29 11:39:44 2003 +++ evolution/e-util/e-host-utils.c Wed Oct 8 16:36:22 2003 @@ -337,8 +337,21 @@ int retval; retval = gethostbyaddr_r (addr, addrlen, type, host, buf, buflen, &hp, herr); - if (hp != NULL) + + if (hp != NULL) { *herr = 0; + retval = 0; + } else if (retval == 0) { + /* glibc 2.3.2 workaround - it seems that + * gethostbyaddr_r will sometimes return 0 on fail and + * fill @host with garbage strings from /etc/hosts + * (failure to parse the file? who knows). Luckily, it + * seems that we can rely on @hp being NULL on + * fail. + */ + retval = -1; + } + return retval; #endif #else /* No support for gethostbyaddr_r */