[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed May 18 18:22:03 MDT 2011


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 <jra at 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 <jra at 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


More information about the samba-cvs mailing list