The branch, master has been updated via 66c3d5d Fix bug found when building on an IPv6-only system by Kai Blin. from 0b0abc1 packaging(RHEL-CTDB): honour rpm build target options handed in to makerpms.sh
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 66c3d5d74b25b9b7703c2f48fd02a43f1d2ae9f2 Author: Jeremy Allison <j...@samba.org> Date: Wed May 18 15:28:28 2011 -0700 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 <j...@samba.org> Autobuild-Date: Thu May 19 02:21:54 CEST 2011 on sn-devel-104 ----------------------------------------------------------------------- Summary of changes: lib/replace/libreplace_network.m4 | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/replace/libreplace_network.m4 b/lib/replace/libreplace_network.m4 index f9bca40..eadcc6b 100644 --- a/lib/replace/libreplace_network.m4 +++ b/lib/replace/libreplace_network.m4 @@ -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) -- Samba Shared Repository