$NetBSD: patch-ae,v 1.1.1.1 2009/08/05 02:59:48 tnn Exp $ --- mozilla/nsprpub/pr/src/misc/prnetdb.c.orig 2009-06-29 18:15:07.000000000 +0200 +++ mozilla/nsprpub/pr/src/misc/prnetdb.c @@ -114,6 +114,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 @@ -331,7 +336,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. @@ -2039,7 +2044,17 @@ 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); + +#if defined(__NetBSD_Version__) && __NetBSD_Version__ < 299000900 + UNLOCK_DNS(); +#endif + if (rv == 0) return (PRAddrInfo *) res;