The Android Security team has been a great proponent of Rust: they helped my team with code reviews, importing all the crates we needed into AOSP, build rules, test infra...
There was a lot I wanted to do after launching the basic transport protocol.
Hopefully others will continue working on the roadmap to stop sending unencrypted hostnames across the Internet (this includes both DNS and SNI).
Linux is sadly lagging behind, with DNS-over-TLS barely supported by systemd-resolved, and DNS-over-QUIC under development in Unbound. Both lack desktop integration for captive portal login, no UI to notify users when a network is blocking port 853...
@tagomago@benoit For historic reasons, the Android DNS resolver runs as root, and it's hard to change due to vendor hooks and SELinux policies that can't be changed retroactively in released versions of Android.
So I just couldn't use Cronet for DoH3, but this was an argument against importing Quiche into AOSP.
@tagomago@benoit There were also concerns like "Rust is too experimental " or "Android CI doesn't support code coverage for Rust", and some FUD that Quiche wasn't a quality implementation of HTTP/3 or couldn't be supported.
@tagomago@benoit In the end, we used Quiche and DoH3 was implemented entirely in Rust.
This might have slowed down the launch of DoH3, but hopefully this initial effort will accelerate the rewrite of thousands of lines of creepy C/C++ code that's currently running on billions of Android phones...
BTW it's a shame that you can't (yet) input a custom server. AdGuard Home supports DoH3.
I will stay with DoT until...
Quote: The initial release of DNS-over-HTTP/3 support limits the user to two โwell-known DNS servers which support itโ, which includes Google DNS and Cloudflare DNS.
But that was over 1 year ago. Android 13 should have had a drop-down list of Private DNS providers, updatable by the DnsResolver module, with the ability to type a custom url for the 0.01% users who'd want to.