feat: implement M2 — multiple upstreams & config

- Failover strategy: try resolvers in order until one succeeds
- Env var overrides: DOH_LISTEN, DOH_UPSTREAM_STRATEGY, DOH_UPSTREAM_RESOLVERS
- Graceful shutdown on SIGINT/SIGTERM
- Strategy parsed from config string to enum
- 14 tests passing, clippy clean, fmt clean
This commit is contained in:
2026-07-06 17:13:45 +03:30
parent 3a5c0d2aba
commit 13bf8ba528
7 changed files with 205 additions and 18 deletions

View File

@@ -86,7 +86,7 @@ See [docs/plan.md](docs/plan.md) for the full project plan and milestone checkli
| Milestone | Status |
|-----------|--------|
| M1 — Core Forwarding | ✅ Done |
| M2 — Multiple Upstreams & Config | 🔲 Not started |
| M2 — Multiple Upstreams & Config | ✅ Done |
| M3 — Caching | 🔲 Not started |
| M4 — Observability | 🔲 Not started |
| M5 — Blocking & Filtering | 🔲 Not started |