All workGitHub
Photon-Dns
DNS resolver manager for Android that measures latency and switches resolvers, within bounds you set.
Problem
Android DNS configuration is either manual or automatic, and the automatic option picks for you without telling you what it picked.
What I built
Kotlin and Jetpack Compose with DNS-over-UDP, strict DNS-over-HTTPS and strict DNS-over-TLS resolver support, per-resolver latency checks and automatic switching with cooldown and hysteresis, plus bounded forwarding.
Impact
Resolver choice becomes an observable decision with the latency data to justify it. Bounds and hysteresis stop it oscillating.
Highlights
- DNS-over-UDP, strict DNS-over-HTTPS, and strict DNS-over-TLS resolver support
- Per-resolver latency checks and automatic switching with cooldown and hysteresis
- Kotlin + Jetpack Compose with bounded packet handling and protected upstream sockets
Stack
- Kotlin
- Android
- DNS
- Privacy
- DoH
- DoT