mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
bpo-35545: Fix asyncio discarding IPv6 scopes (GH-11271)
This PR proposes a solution to [bpo-35545](https://bugs.python.org/issue35545) by adding an optional `flowinfo` and `scopeid` to `asyncio.base_events._ipaddr_info` to carry the full address information into `_ipaddr_info` and avoid discarding IPv6 specific information. Changelog entry & regression tests to come. https://bugs.python.org/issue35545
This commit is contained in:
parent
14514d9084
commit
ac8eb8f36b
3 changed files with 27 additions and 3 deletions
|
@ -1299,6 +1299,28 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
|
|||
t.close()
|
||||
test_utils.run_briefly(self.loop) # allow transport to close
|
||||
|
||||
@patch_socket
|
||||
def test_create_connection_ipv6_scope(self, m_socket):
|
||||
m_socket.getaddrinfo = socket.getaddrinfo
|
||||
sock = m_socket.socket.return_value
|
||||
sock.family = socket.AF_INET6
|
||||
|
||||
self.loop._add_reader = mock.Mock()
|
||||
self.loop._add_reader._is_coroutine = False
|
||||
self.loop._add_writer = mock.Mock()
|
||||
self.loop._add_writer._is_coroutine = False
|
||||
|
||||
coro = self.loop.create_connection(asyncio.Protocol, 'fe80::1%1', 80)
|
||||
t, p = self.loop.run_until_complete(coro)
|
||||
try:
|
||||
sock.connect.assert_called_with(('fe80::1', 80, 0, 1))
|
||||
_, kwargs = m_socket.socket.call_args
|
||||
self.assertEqual(kwargs['family'], m_socket.AF_INET6)
|
||||
self.assertEqual(kwargs['type'], m_socket.SOCK_STREAM)
|
||||
finally:
|
||||
t.close()
|
||||
test_utils.run_briefly(self.loop) # allow transport to close
|
||||
|
||||
@patch_socket
|
||||
def test_create_connection_ip_addr(self, m_socket):
|
||||
self._test_create_connection_ip_addr(m_socket, True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue