diff options
author | Ned Deily <nad@python.org> | 2016-02-23 11:05:29 (GMT) |
---|---|---|
committer | Ned Deily <nad@python.org> | 2016-02-23 11:05:29 (GMT) |
commit | e1d4e58777f28bb000fe95768186f70ff1de45a3 (patch) | |
tree | 5bc3a7a0e38eaeb2ad41ba57a7683d95cfd66ce7 /Modules | |
parent | f1d371bde9be7bf9dab21114b8137c66476a20ac (diff) | |
download | cpython-e1d4e58777f28bb000fe95768186f70ff1de45a3.zip cpython-e1d4e58777f28bb000fe95768186f70ff1de45a3.tar.gz cpython-e1d4e58777f28bb000fe95768186f70ff1de45a3.tar.bz2 |
Issue #26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/socketmodule.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 0b679df..8f571a2 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -184,7 +184,7 @@ if_indextoname(index) -- return the corresponding interface name\n\ # define USE_GETHOSTBYNAME_LOCK #endif -/* To use __FreeBSD_version */ +/* To use __FreeBSD_version, __OpenBSD__, and __NetBSD_Version__ */ #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif @@ -195,15 +195,21 @@ if_indextoname(index) -- return the corresponding interface name\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(HAVE_GETADDRINFO)) #define USE_GETADDRINFO_LOCK #endif |