[issue35545] asyncio.base_events.create_connection doesn't handle scoped IPv6 addresses

Erwan Le Pape report at bugs.python.org
Fri May 24 18:19:52 EDT 2019


Erwan Le Pape <lepaperwan3 at gmail.com> added the comment:

Thanks for testing that. It's good that you used an actual address because that eliminates the possibility that AIX doesn't handle addresses it doesn't really know about.

On the other hand, even when properly specified to a real scoped IPv6 address, `getaddrinfo` doesn't seem to get the necessary scope ID from the underlying C call which socket.getaddrinfo > _socket.getaddrinfo is pretty much mapped to.

I'm looking at cpython/master for the socketmodule implementation:
https://github.com/python/cpython/blob/6dbbe748e101a173b4cff8aada41e9313e287e0f/Modules/socketmodule.c#L6400 is `getaddrinfo`
https://github.com/python/cpython/blob/master/Modules/socketmodule.c#L1294 is `makesockaddr` which actually creates the 4-tuple returned as the last element of the `getaddrinfo` tuples.
The fourth element (ie. the scope ID) is clearly `a->sin6_scope_id` which should contain the scope ID.

At this stage, I don't know if this is a bug from the socketmodule which I doubt or if the AIX `getaddrinfo` simply just doesn't handle scoped IP addresses properly.

If you're still okay to proxy tests for AIX, I'll try and come up with either a simple C snippet to see what's in the returned structure or ctype the AIX `libc` `getaddrinfo`.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue35545>
_______________________________________


More information about the Python-bugs-list mailing list