From a7e4022d6b8600e7835cde0c82147513427aaac8 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 13 Nov 2009 05:01:51 +0000 Subject: Related with the threadsafe capability of getaddrinfo: - Constantine Sapuntzakis reported that Darwin 6.0 a.k.a. MAC OS X 10.2 and newer have a threadsafe getaddrinfo. - Fix Dragonfly BSD triplet detection. - In case the hard-coded knowledge says that getaddrinfo is threadsafe, an additional check is done to verify that h_errno is also defined. If h_errno isn't defined, we finally assume that it isn't threadsafe. Jamie Lokier provided the inspiration for this extra check. --- ares/m4/cares-functions.m4 | 21 +++++++++++++++------ m4/curl-functions.m4 | 21 +++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/ares/m4/cares-functions.m4 b/ares/m4/cares-functions.m4 index 898a4eaef..ec9ff9a2e 100644 --- a/ares/m4/cares-functions.m4 +++ b/ares/m4/cares-functions.m4 @@ -16,7 +16,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 35 +# serial 36 dnl CARES_INCLUDES_ARPA_INET @@ -1019,16 +1019,16 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [ dnl aix 5.2 and newer tst_tsafe_getaddrinfo="yes" ;; - darwin[[12354678]].*) - dnl darwin 8.X and older + darwin[[12345]].*) + dnl darwin 5.0 and mac os x 10.1.X and older tst_tsafe_getaddrinfo="no" ;; darwin*) - dnl darwin 9.X and newer + dnl darwin 6.0 and mac os x 10.2.X and newer tst_tsafe_getaddrinfo="yes" ;; - dragonflybsd*) - dnl dragonflybsd any version + dragonfly*) + dnl dragonfly bsd any version tst_tsafe_getaddrinfo="yes" ;; freebsd[[1234]].* | freebsd5.[[1234]]*) @@ -1060,6 +1060,15 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [ tst_tsafe_getaddrinfo="yes" ;; esac + CURL_CHECK_DEF_CC([h_errno], [ + $curl_includes_ws2tcpip + $curl_includes_sys_socket + $curl_includes_netdb + ], [silent]) + if test "$tst_tsafe_getaddrinfo" = "yes" && + test "$curl_cv_have_def_h_errno" = "no"; then + tst_tsafe_getaddrinfo="no" + fi AC_MSG_RESULT([$tst_tsafe_getaddrinfo]) if test "$tst_tsafe_getaddrinfo" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1, diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4 index 81543934e..d3a783112 100644 --- a/m4/curl-functions.m4 +++ b/m4/curl-functions.m4 @@ -22,7 +22,7 @@ #*************************************************************************** # File version for 'aclocal' use. Keep it a single number. -# serial 57 +# serial 58 dnl CURL_INCLUDES_ARPA_INET @@ -1643,16 +1643,16 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [ dnl aix 5.2 and newer tst_tsafe_getaddrinfo="yes" ;; - darwin[[12354678]].*) - dnl darwin 8.X and older + darwin[[12345]].*) + dnl darwin 5.0 and mac os x 10.1.X and older tst_tsafe_getaddrinfo="no" ;; darwin*) - dnl darwin 9.X and newer + dnl darwin 6.0 and mac os x 10.2.X and newer tst_tsafe_getaddrinfo="yes" ;; - dragonflybsd*) - dnl dragonflybsd any version + dragonfly*) + dnl dragonfly bsd any version tst_tsafe_getaddrinfo="yes" ;; freebsd[[1234]].* | freebsd5.[[1234]]*) @@ -1684,6 +1684,15 @@ AC_DEFUN([CURL_CHECK_FUNC_GETADDRINFO], [ tst_tsafe_getaddrinfo="yes" ;; esac + CURL_CHECK_DEF_CC([h_errno], [ + $curl_includes_ws2tcpip + $curl_includes_sys_socket + $curl_includes_netdb + ], [silent]) + if test "$tst_tsafe_getaddrinfo" = "yes" && + test "$curl_cv_have_def_h_errno" = "no"; then + tst_tsafe_getaddrinfo="no" + fi AC_MSG_RESULT([$tst_tsafe_getaddrinfo]) if test "$tst_tsafe_getaddrinfo" = "yes"; then AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1, -- cgit v1.2.3