From: Ned Deily Date: Tue, 23 Feb 2016 11:03:39 +0000 (+1100) Subject: Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on X-Git-Tag: v2.7.12rc1~218 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3058eb418a3374ddb9ae8b7f29f4ebd072837dd7;p=thirdparty%2FPython%2Fcpython.git Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. --- diff --git a/Misc/NEWS b/Misc/NEWS index 287697108471..931a9e065960 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -119,7 +119,10 @@ Library - Issue #23914: Fixed SystemError raised by CPickle unpickler on broken data. - Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on - OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.. + OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. + +- Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on + current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. IDLE ---- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index c02c5d97880e..cd6df9258139 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -183,7 +183,7 @@ shutdown(how) -- shut down traffic in one or both directions\n\ # define USE_GETHOSTBYNAME_LOCK #endif -/* To use __FreeBSD_version */ +/* To use __FreeBSD_version, __OpenBSD__, and __NetBSD_Version__ */ #ifdef HAVE_SYS_PARAM_H #include #endif @@ -194,15 +194,21 @@ shutdown(how) -- shut down traffic in one or both directions\n\ a mix of code including an unsafe implementation from an old BSD's libresolv. In 10.5 Apple reimplemented it as a safe IPC call to the mDNSResponder process. 10.5 is the first be UNIX '03 certified, which - includes the requirement that getaddrinfo be thread-safe. + includes the requirement that getaddrinfo be thread-safe. See issue #25924. - See issue #25924 for details. - */ + It's thread-safe in OpenBSD starting with 5.4, released Nov 2013: + http://www.openbsd.org/plus54.html + + It's thread-safe in NetBSD starting with 4.0, released Dec 2007: + +http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libc/net/getaddrinfo.c.diff?r1=1.82&r2=1.83 +*/ #if defined(WITH_THREAD) && ( \ (defined(__APPLE__) && \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) || \ (defined(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \ - defined(__OpenBSD__) || defined(__NetBSD__) || \ + (defined(__OpenBSD__) && OpenBSD+0 < 201311) || \ + (defined(__NetBSD__) && __NetBSD_Version__+0 < 400000000) || \ defined(__VMS) || !defined(HAVE_GETADDRINFO)) #define USE_GETADDRINFO_LOCK #endif