mirror of
https://github.com/python/cpython.git
synced 2025-07-07 11:25:30 +00:00
gh-114917: add support for AI_NUMERICSERV in getaddrinfo emulation (#114918)
This commit is contained in:
parent
b0a4f6599a
commit
3453b5c1d6
4 changed files with 12 additions and 2 deletions
|
@ -1662,8 +1662,11 @@ class GeneralModuleTests(unittest.TestCase):
|
|||
# Issue #6697.
|
||||
self.assertRaises(UnicodeEncodeError, socket.getaddrinfo, 'localhost', '\uD800')
|
||||
|
||||
# Issue 17269: test workaround for OS X platform bug segfault
|
||||
if hasattr(socket, 'AI_NUMERICSERV'):
|
||||
self.assertRaises(socket.gaierror, socket.getaddrinfo, "localhost", "http",
|
||||
flags=socket.AI_NUMERICSERV)
|
||||
|
||||
# Issue 17269: test workaround for OS X platform bug segfault
|
||||
try:
|
||||
# The arguments here are undefined and the call may succeed
|
||||
# or fail. All we care here is that it doesn't segfault.
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add support for AI_NUMERICSERV in getaddrinfo emulation
|
|
@ -77,6 +77,7 @@
|
|||
#undef AI_PASSIVE
|
||||
#undef AI_CANONNAME
|
||||
#undef AI_NUMERICHOST
|
||||
#undef AI_NUMERICSERV
|
||||
#undef AI_MASK
|
||||
#undef AI_ALL
|
||||
#undef AI_V4MAPPED_CFG
|
||||
|
@ -88,8 +89,9 @@
|
|||
#define AI_PASSIVE 0x00000001 /* get address to use bind() */
|
||||
#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
|
||||
#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
|
||||
#define AI_NUMERICSERV 0x00000008 /* prevent service resolution */
|
||||
/* valid flags for addrinfo */
|
||||
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
|
||||
#define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_NUMERICSERV)
|
||||
|
||||
#define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
|
||||
#define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
|
||||
|
|
|
@ -351,6 +351,10 @@ getaddrinfo(const char*hostname, const char*servname,
|
|||
struct servent *sp;
|
||||
const char *proto;
|
||||
|
||||
if (ai->ai_flags & AI_NUMERICSERV) {
|
||||
ERR(EAI_NONAME);
|
||||
}
|
||||
|
||||
proto = NULL;
|
||||
switch (pai->ai_socktype) {
|
||||
case GAI_ANY:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue