Title: getaddrinfo emulation does not support AI_NUMERICSERV
Type: behavior Stage:
Components: Extension Modules Versions: Python 3.7
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, smejkar
Priority: normal Keywords:

Created on 2017-06-27 10:40 by smejkar, last changed 2018-09-14 04:42 by benjamin.peterson.

Pull Requests
URL Status Linked Edit
PR 2437 open smejkar, 2017-06-27 11:25
Messages (2)
msg297020 - (view) Author: Radek Smejkal (smejkar) * Date: 2017-06-27 10:40
Modules/getaddrinfo.c should support AI_NUMERICSERV.

Moreover, not supporting AI_NUMERICSERV may cause troubles on platforms where the getaddrinfo function is available but it's buggy (see and Modules/socketmodule.c), because Modules/addrinfo.h does not #undef AI_NUMERICSERV and Modules/socketmodule.c exports AI_NUMERICSERV defined in a system header that may collide with another flag defined in Modules/addrinfo.h and confuse the user.

./configure --with-pydebug
Comment out HAVE_GETADDRINFO in pyconfig.h
Comment out ENABLE_IPV6 in pyconfig.h on platforms where getipnodebyname and friends are not available
make -j
Python 3.7.0a0 (default, Jun 27 2017, 11:59:50) 
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
<AddressInfo.AI_ADDRCONFIG: 1024>
>>> socket.getaddrinfo(None, "http", flags=socket.AI_NUMERICSERV)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/radek/src/github/cpython/Lib/", line 743, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 3] invalid value for ai_flags.
msg325323 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2018-09-14 04:42
What platform needs Modules/getaddrinfo.c these days?
Date User Action Args
2018-09-14 04:42:57benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg325323
2017-06-27 11:25:59smejkarsetpull_requests: + pull_request2485
2017-06-27 10:40:08smejkarcreate