diff --git a/configure.in b/configure.in
index ae7ca6540e4e7b634b9423c1ffaed7b39d03828d..052ed826c185cef5462ba85132650e191f51057c 100644
--- a/configure.in
+++ b/configure.in
@@ -26,6 +26,53 @@ dnl The install stuff has already been taken care of by the automake stuff
 dnl AC_PROG_INSTALL
 AC_PROG_MAKE_SET
 
+
+
+dnl
+dnl check for working getaddrinfo()
+dnl
+AC_DEFUN(CURL_CHECK_WORKING_GETADDRINFO,[
+  AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
+  AC_TRY_RUN( [
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+void main(void) {
+    struct addrinfo hints, *ai;
+    int error;
+
+    memset(&hints, 0, sizeof(hints));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
+    if (error) {
+        exit(1);
+    }
+    else {
+        exit(0);
+    }
+}
+],[
+  ac_cv_working_getaddrinfo="yes"
+],[
+  ac_cv_working_getaddrinfo="no"
+],[
+  ac_cv_working_getaddrinfo="yes"
+])])
+if test "$ac_cv_working_getaddrinfo" = "yes"; then
+  AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works])
+  AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
+fi
+])
+
+
 AC_DEFUN(CURL_CHECK_LOCALTIME_R,
 [
   dnl check for a few thread-safe functions
@@ -251,7 +298,6 @@ AC_ARG_ENABLE(ipv6,
        ipv6=no
        ;;
   *)   AC_MSG_RESULT(yes)
-       AC_DEFINE(ENABLE_IPV6)
        ipv6=yes
        ;;
   esac ],
@@ -268,7 +314,6 @@ main()
 }
 ],
   AC_MSG_RESULT(yes)
-  AC_DEFINE(ENABLE_IPV6)
   ipv6=yes,
   AC_MSG_RESULT(no)
   ipv6=no,
@@ -276,6 +321,11 @@ main()
   ipv6=no
 ))
 
+if test "$ipv6" = "yes"; then
+  CURL_CHECK_WORKING_GETADDRINFO
+fi
+
+
 dnl **********************************************************************
 dnl Checks for libraries.
 dnl **********************************************************************