package app import ( "sync" "time" ) type dnsAttemptPolicy struct { TryLimit int DomainBudget time.Duration StopOnNX bool } type dnsCooldownState struct { Attempts int TimeoutLike int FailStreak int BanUntil int64 BanLevel int } type dnsRunCooldown struct { mu sync.Mutex enabled bool minAttempts int timeoutRatePct int failStreak int banSec int maxBanSec int temporaryAsError bool byUpstream map[string]*dnsCooldownState }