33 lines
524 B
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
|
|
}
|