mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
This commit is contained in:
parent
203ce927f5
commit
47299fd39c
2 changed files with 21 additions and 2 deletions
|
@ -212,6 +212,9 @@ Library
|
||||||
- Issue #26050: Add asyncio.StreamReader.readuntil() method.
|
- Issue #26050: Add asyncio.StreamReader.readuntil() method.
|
||||||
Patch by Марк Коренберг.
|
Patch by Марк Коренберг.
|
||||||
|
|
||||||
|
- Issue #25924: Avoid unnecessary serialization of getaddrinfo(3) calls on
|
||||||
|
OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,11 @@ Local naming conventions:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
#include <AvailabilityMacros.h>
|
||||||
|
/* for getaddrinfo thread safety test on old versions of OS X */
|
||||||
|
#ifndef MAC_OS_X_VERSION_10_5
|
||||||
|
#define MAC_OS_X_VERSION_10_5 1050
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* inet_aton is not available on OSX 10.3, yet we want to use a binary
|
* inet_aton is not available on OSX 10.3, yet we want to use a binary
|
||||||
* that was build on 10.4 or later to work on that release, weak linking
|
* that was build on 10.4 or later to work on that release, weak linking
|
||||||
|
@ -184,8 +189,19 @@ if_indextoname(index) -- return the corresponding interface name\n\
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#endif
|
#endif
|
||||||
/* On systems on which getaddrinfo() is believed to not be thread-safe,
|
/* On systems on which getaddrinfo() is believed to not be thread-safe,
|
||||||
(this includes the getaddrinfo emulation) protect access with a lock. */
|
(this includes the getaddrinfo emulation) protect access with a lock.
|
||||||
#if defined(WITH_THREAD) && (defined(__APPLE__) || \
|
|
||||||
|
getaddrinfo is thread-safe on Mac OS X 10.5 and later. Originally it was
|
||||||
|
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.
|
||||||
|
|
||||||
|
See issue #25924 for details.
|
||||||
|
*/
|
||||||
|
#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(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \
|
||||||
defined(__OpenBSD__) || defined(__NetBSD__) || \
|
defined(__OpenBSD__) || defined(__NetBSD__) || \
|
||||||
!defined(HAVE_GETADDRINFO))
|
!defined(HAVE_GETADDRINFO))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue