- Fast mode cache isolation: TraverserConfig.Fast=false gives each
referral its own independent InfoCache with no cross-branch glue
inheritance; Fast=true (default) retains the shared root cache so
earlier branch discoveries are reused
- Wire cfg.Fast from CLI config into TraverserConfig in main.go
- IDN/Punycode: NewReferral now converts unicode domain labels to their
ACE/punycode form via golang.org/x/net/idna before querying, with a
graceful fallback when conversion fails
- DNSSEC: hasFinalAnswer() now skips RRSIG records alongside CNAME so
a signed referral does not prevent CNAME following
- Tests: DNSSEC RRSIG does not block CNAME follow, fast/non-fast cache
isolation, 12-NS referral, IDN conversion, wildcard answer, long CNAME
chain depth limit, partial branch failure with graceful degradation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: multica-agent <github@multica.ai>
- Exponential backoff retry logic (100ms, 200ms, 400ms... capped at 2s)
replacing fixed 100ms delay between retries
- Explicit REFUSED and NOTIMP response types (RespREFUSED, RespNOTIMPL)
surfaced as terminal results with user-visible messages
- CNAME loop detection: walking the ancestor referral chain before
following a CNAME prevents infinite recursion; produces RespCNAMELoop
- DNAME record support: synthesize CNAME target from DNAME mapping when
the server omits the RFC 6672 synthesized CNAME record
- ErrorMessage field on Response for surfacing error details to users
- Fix resolveGlueViaSystem timeout bug: deadline.Sub(deadline) was
always 0; replaced with time.Until(deadline)
- DNAME records excluded from hasFinalAnswer so DNAME-only responses
are correctly classified as RespCNAMEFollow
- Text and JSON output updated with labels for all new response types
- Tests: CNAME loop (2-step and direct), REFUSED, NOTIMP, graceful
degradation (partial and total server failure), DNAME synthesis,
IsNameInChain, backoffDelay, ResponseClassification strings
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: multica-agent <github@multica.ai>