diff --git a/Lib/asyncio/selector_events.py b/Lib/asyncio/selector_events.py index 33ebc4b27808ce..e99a50395e7cb0 100644 --- a/Lib/asyncio/selector_events.py +++ b/Lib/asyncio/selector_events.py @@ -620,7 +620,8 @@ async def sock_connect(self, sock, address): if self._debug and sock.gettimeout() != 0: raise ValueError("the socket must be non-blocking") - if not hasattr(socket, 'AF_UNIX') or sock.family != socket.AF_UNIX: + if sock.family == socket.AF_INET or ( + base_events._HAS_IPv6 and sock.family == socket.AF_INET6): resolved = await self._ensure_resolved( address, family=sock.family, type=sock.type, proto=sock.proto, loop=self, diff --git a/Misc/NEWS.d/next/Library/2022-03-28-13-35-50.bpo-27929.j5mAmV.rst b/Misc/NEWS.d/next/Library/2022-03-28-13-35-50.bpo-27929.j5mAmV.rst new file mode 100644 index 00000000000000..4c80a10bc56844 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-03-28-13-35-50.bpo-27929.j5mAmV.rst @@ -0,0 +1,3 @@ +Fix :meth:`asyncio.loop.sock_connect` to only resolve names for :const:`socket.AF_INET` or +:const:`socket.AF_INET6` families. Resolution may not make sense for other families, +like :const:`socket.AF_BLUETOOTH` and :const:`socket.AF_UNIX`.