resolver: try servers in a random order on each resolution (closes #138)
check / check (push) Failing after 2m15s
check / check (push) Failing after 2m15s
Every resolution walked the root servers in a fixed order, so a.root-servers.net got every first query and its timeouts were paid on every lookup. Each list of servers the resolver walks, the root servers and the nameservers of each zone below them, is now walked in a random order from the standard library's rand.Shuffle, chosen anew each time. Failover is unchanged: after a failure the next server is tried, and the walk fails only when every server has. The shuffle is passed in, so the tests check the order with a seeded source; which server a live query reached is not observable, so no test fails if the walk stops shuffling. Model: opus-5-5
This commit is contained in:
@@ -19,6 +19,8 @@ trial run of the finished image: https://git.eeqj.de/sneak/dnswatcher/issues/149
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-01: the resolver tries root servers, and every other server list it
|
||||
walks, in a random order each time, not always from the top (closes #138).
|
||||
- 2026-10-01: `ResolveIPAddresses` returns an error, not no addresses, when no
|
||||
nameserver of the name's zone answered (closes #190).
|
||||
- 2026-10-01: `make fmt` and `make fmt-check` cover Markdown with prettier, run
|
||||
@@ -120,5 +122,4 @@ trial run of the finished image: https://git.eeqj.de/sneak/dnswatcher/issues/149
|
||||
- README accuracy sweep: https://git.eeqj.de/sneak/dnswatcher/issues/108
|
||||
- README sections required by policy:
|
||||
https://git.eeqj.de/sneak/dnswatcher/issues/173
|
||||
- fixed root server order: https://git.eeqj.de/sneak/dnswatcher/issues/138
|
||||
- review toward 1.0: https://git.eeqj.de/sneak/dnswatcher/issues/144
|
||||
|
||||
Reference in New Issue
Block a user