-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Open
Labels
Description
Describe the bug
With aiohttp v3.10.10, mDNS hostnames do not resolve when aiodns is installed.
When I force the use of a ThreadedResolver, or when I uninstall aiodns, mDNS hostnames resolve fine.
I see (#8522) that aiodns was made the default resolver again, recently, which explains the regression. The underlying c-ares library has a long-time open request for mDNS support (c-ares/c-ares#171) and no movement over the past few years.
To Reproduce
You will need a mDNS-resolvable service for this to work. (If you have avahi-daemon installed, your hostname with a .local suffix should suffice.)
>>> import aiohttp
>>> import asyncio
>>> async def main():
... async with aiohttp.ClientSession() as session:
... async with session.get('http://some_mdns_hostname.local') as resp:
... print(resp.status)
... print(await resp.text())
>>>asyncio.run(main())
ClientConnectorDNSError: Cannot connect to host rfmux0033.local:80 ssl:default [Domain name not found]
Expected behavior
Correct resolution of the hostname via mDNS.
Logs/tracebacks
ClientConnectorDNSError: Cannot connect to host some_mdns_hostname.local:80 ssl:default [Domain name not found]
Python Version
$ python --version
Python 3.12.8
aiohttp Version
aiohttp.__version__
'3.10.10'
multidict Version
multidict.__version__
'6.1.0'
propcache Version
Not installed.
yarl Version
yarl.__version__
'1.13.1'
OS
Debian Linux (testing)
Related component
Client
Additional context
No response
Code of Conduct
- I agree to follow the aio-libs Code of Conduct