libreplace: Attempt to fix bug 5910, detect a broken getaddrinfo
authorVolker Lendecke <vl@samba.org>
Sun, 7 Feb 2010 17:09:11 +0000 (18:09 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 8 Feb 2010 08:59:20 +0000 (09:59 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
lib/replace/libreplace_network.m4

index b7d15eaddbd6ba309b4d21f032aa5ee295c9d58a..bccd77336a73f576aa71a2000794c81dd3d798ab 100644 (file)
@@ -226,6 +226,31 @@ ret = getnameinfo(&sa, sizeof(sa),
 
 ],
 libreplace_cv_HAVE_GETADDRINFO=yes,libreplace_cv_HAVE_GETADDRINFO=no)])
+
+if test x"$libreplace_cv_HAVE_GETADDRINFO" = x"yes"; then
+       # getaddrinfo is broken on some AIX systems
+       # see bug 5910, use our replacements if we detect
+       # a broken system.
+       AC_TRY_RUN([
+               #include <stddef.h>
+               #include <sys/types.h>
+               #include <sys/socket.h>
+               #include <netdb.h>
+               int main(int argc, const char *argv[])
+               {
+                       struct addrinfo hints = {0,};
+                       struct addrinfo *ppres;
+                       const char hostname[] = "0.0.0.0";
+                       hints.ai_socktype = SOCK_STREAM;
+                       hints.ai_family = AF_INET;
+                       hints.ai_flags =
+                               AI_NUMERICHOST|AI_PASSIVE|AI_ADDRCONFIG;
+                       return getaddrinfo(hostname, NULL, &hints, &ppres) != 0 ? 1 : 0;
+               }],
+               libreplace_cv_HAVE_GETADDRINFO=yes,
+               libreplace_cv_HAVE_GETADDRINFO=no)
+fi
+
 if test x"$libreplace_cv_HAVE_GETADDRINFO" = x"yes"; then
        AC_DEFINE(HAVE_GETADDRINFO,1,[Whether the system has getaddrinfo])
        AC_DEFINE(HAVE_GETNAMEINFO,1,[Whether the system has getnameinfo])