1 unstable release
new 0.1.0 | Dec 22, 2024 |
---|
#20 in #dns-lookup
22KB
501 lines
dnsur
An asynchronous DNS stub resolver.
Motivation
The monoio async runtime does not ship with an asynchronous DNS resolver, and rather relies
on a threadpool to handle the blocking calls (like most other runtimes). This library aims to do the resolution in an async manner, including the file system access (using io_uring
).
Details
/etc/hosts
and/etc/resolv.conf
are parsed to build the configuration.- The entries in the
hosts
are tried first, and if not present, thenameservers
fromresolv.conf
will be queried. - Querying of the nameservers is done sequentially (i.e. we query the second nameserver only if the first one has failed).
- A and AAAA records are queried concurrently.
- Default UDP buffer size is 1232 bytes.
Non-standard behavior
limitation | glibc | dnsur |
---|---|---|
nameserver |
3 | unlimited |
timeout |
30 | u64::MAX |
ndots |
15 | u8::MAX |
attempts |
5 | u8::MAX |
TODO
- Support for
rotate
Status
Hic Sunt Dracones
License
Mozilla Public License Version 2.0. See the LICENSE file for details.
Acknowledgement
This library is inspired by async-dns
Dependencies
~6–16MB
~172K SLoC