mirror of
https://github.com/wweir/sower.git
synced 2026-10-19 16:14:33 +00:00
- degradeUpstream now takes the caller's snapshot length: a concurrent refresh that grows the live upstream list no longer lets the retry index past the stale snapshot and panic the DNS handler. - Internal reverse lookups take a dedicated forward path that never runs the degrade state machine: the query goes only to the selected internal upstream and surfaces SERVFAIL on failure instead of retrying onto a public fallback, closing the TOCTOU leak in the PTR gate. - Local DNS replies set the RecursionAvailable bit per RFC 1035. - A failed TCP retry for a truncated UDP response keeps the truncated response (with TC set) instead of dropping it for SERVFAIL, so networks that block TCP/53 still get usable answers.