[NOTE] the development of this branch is temporary paused due to code-refactor in progress at https://github.com/delta4chat/hitdns/tree/refactor
After code refactoring, the following issues are expected to be resolved:
- the problem of untimely update, currently it takes 2~3 queries for a 0 TTL expired record to trigger the update, the reason is unknown.
- the current HTTP API is not standardized, it is expected to use the REST API standard instead, and achieve API consistency.
- EDNS in wire format is currently forced to be stripped, in the future it will be changed to be configurable whether to keep it or not.
- the database format (sqlite3) is not pure-Rust (slowly to compile), it is expected to use
sled
with some async wrapper instead. - the
reqwest
crate is depends to tokio, it is expected to use another HTTPS client that can working properly forsmol
ecosystem instead. - the CLI arguments configuration will be completely replaced by file-based configuration.
- improved logging library using
log4rs
. - add support for DNS Stamp (
sdns://
) URL format to define upstream servers. - add more DNS ustream protocols, e.g. DNSCrypt, DNS over QUIC, DNS over HTTP/3.
hitdns has low query latency and a high cache hit rate. This is because it will return the last available DNS resolution result whenever possible (regardless of whether its TTL has expired) and if it does expired, it will start an update task in the background, instead of "waiting for the upstream DNS recursor to return the latest result" like other DNS resolvers (e.g. dnsmasq).
So hitdns users will only experience delays the first time they query a domain they've never queried before, and every time they query this domain after that, they'll get near-instantaneous response latency.
the bin
branch contains a lot of large files for pre-compiled binaries, you may want to exclude these large files, you can clone only master
branch that contains source code only.
git clone https://github.com/delta4chat/hitdns --single-branch
or just filter these blobs
git clone https://github.com/delta4chat/hitdns --filter=blob:limit=1M