mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
Fix bug found when building on an IPv6-only system by Kai Blin.
When building on IPv6-only, doing: hints.ai_family = AF_INET; getaddrinfo("0.0.0.0", NULL, &hints, &ppres) fails as AF_INET is unavailable on an IPv6-only system. This causes us to fallback to our replacement getaddrinfo code which is IPv4-only. As we're only trying to detect a specific AIX bug here, broaden the tests to find that bug, and also test for working getaddrinfo in an IPv6-only safe way. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Thu May 19 02:21:54 CEST 2011 on sn-devel-104
This commit is contained in:
@ -240,12 +240,25 @@ if test x"$libreplace_cv_HAVE_GETADDRINFO" = x"yes"; then
|
||||
{
|
||||
struct addrinfo hints = {0,};
|
||||
struct addrinfo *ppres;
|
||||
const char hostname[] = "0.0.0.0";
|
||||
const char hostname1[] = "0.0.0.0";
|
||||
const char hostname2[] = "127.0.0.1";
|
||||
const char hostname3[] = "::";
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
hints.ai_family = AF_INET;
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
hints.ai_flags =
|
||||
AI_NUMERICHOST|AI_PASSIVE|AI_ADDRCONFIG;
|
||||
return getaddrinfo(hostname, NULL, &hints, &ppres) != 0 ? 1 : 0;
|
||||
/* Test for broken flag combination on AIX. */
|
||||
if (getaddrinfo(hostname1, NULL, &hints, &ppres) == EAI_BADFLAGS) {
|
||||
/* This fails on an IPv6-only box, but not with
|
||||
the EAI_BADFLAGS error. */
|
||||
return 1;
|
||||
}
|
||||
if (getaddrinfo(hostname2, NULL, &hints, &ppres) == 0) {
|
||||
/* IPv4 lookup works - good enough. */
|
||||
return 0;
|
||||
}
|
||||
/* Uh-oh, no IPv4. Are we IPv6-only ? */
|
||||
return getaddrinfo(hostname3, NULL, &hints, &ppres) != 0 ? 1 : 0;
|
||||
}],
|
||||
libreplace_cv_HAVE_GETADDRINFO=yes,
|
||||
libreplace_cv_HAVE_GETADDRINFO=no)
|
||||
|
Reference in New Issue
Block a user