1 unstable release

new 0.1.0 Dec 22, 2024

#20 in #dns-lookup

MPL-2.0 license

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, the nameservers from resolv.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