$NetBSD: patch-ae,v 1.8 2011/11/13 16:59:58 tnn Exp $ --- mozilla/nsprpub/pr/src/misc/prnetdb.c.orig 2011-09-22 20:20:37.000000000 +0000 +++ mozilla/nsprpub/pr/src/misc/prnetdb.c @@ -105,7 +105,7 @@ PRLock *_pr_dnsLock = NULL; || defined(AIX4_3_PLUS) || (defined(AIX) && defined(_THREAD_SAFE)) \ || (defined(HPUX10_10) && defined(_REENTRANT)) \ || (defined(HPUX10_20) && defined(_REENTRANT)) \ - || defined(OPENBSD) + || defined(OPENBSD) || defined(NETBSD) #define _PR_HAVE_GETPROTO_R #define _PR_HAVE_GETPROTO_R_INT #endif @@ -115,6 +115,11 @@ PRLock *_pr_dnsLock = NULL; #define _PR_HAVE_5_ARG_GETPROTO_R #endif +#if __DragonFly_version >= 200202 +#define _PR_HAVE_GETPROTO_R +#define _PR_HAVE_5_ARG_GETPROTO_R +#endif + /* BeOS has glibc but not the glibc-style getprotobyxxx_r functions. */ #if (defined(__GLIBC__) && __GLIBC__ >= 2 && !defined(XP_BEOS)) #define _PR_HAVE_GETPROTO_R @@ -332,7 +337,7 @@ _pr_QueryNetIfs(void) } #elif (defined(DARWIN) && defined(HAVE_GETIFADDRS)) || defined(FREEBSD) \ - || defined(NETBSD) || defined(OPENBSD) + || defined(NETBSD) || defined(OPENBSD) || defined(DRAGONFLY) /* * Use the BSD getifaddrs function. @@ -2076,6 +2081,11 @@ PR_IMPLEMENT(PRAddrInfo *) PR_GetAddrInf */ hints.ai_socktype = SOCK_STREAM; +/* NetBSD >= 2.99.9 has a thread-safe resolver */ +#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 299000900 + LOCK_DNS(); +#endif + rv = GETADDRINFO(hostname, NULL, &hints, &res); #ifdef AI_ADDRCONFIG if (rv == EAI_BADFLAGS && (hints.ai_flags & AI_ADDRCONFIG)) { @@ -2083,6 +2093,11 @@ PR_IMPLEMENT(PRAddrInfo *) PR_GetAddrInf rv = GETADDRINFO(hostname, NULL, &hints, &res); } #endif + +#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 299000900 + UNLOCK_DNS(); +#endif + if (rv == 0) return (PRAddrInfo *) res;