Files
elmprodvpn/selective-vpn-api/app/resolver_dns_policy.go

33 lines
524 B
Go

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
}