resolver: reduce query timeout to 2s and limit root fan-out to 3 (closes #29)
Some checks failed
Check / check (pull_request) Failing after 5m22s

This commit is contained in:
clawbot
2026-02-22 03:36:17 -08:00
parent 8cfff5dcc8
commit fa7ac4929f

View File

@@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"math/rand/v2"
"net"
"sort"
"strings"
@@ -13,7 +14,7 @@ import (
)
const (
queryTimeoutDuration = 5 * time.Second
queryTimeoutDuration = 2 * time.Second
maxRetries = 2
maxDelegation = 20
timeoutMultiplier = 2
@@ -23,7 +24,7 @@ const (
// ErrRefused is returned when a DNS server refuses a query.
var ErrRefused = errors.New("dns query refused")
func rootServerList() []string {
func allRootServers() []string {
return []string{
"198.41.0.4", // a.root-servers.net
"170.247.170.2", // b
@@ -41,6 +42,15 @@ func rootServerList() []string {
}
}
func rootServerList() []string {
shuffled := allRootServers()
rand.Shuffle(len(shuffled), func(i, j int) {
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
})
return shuffled[:3]
}
func checkCtx(ctx context.Context) error {
err := ctx.Err()
if err != nil {
@@ -302,7 +312,7 @@ func (r *Resolver) resolveNSRecursive(
msg.SetQuestion(domain, dns.TypeNS)
msg.RecursionDesired = true
for _, ip := range rootServerList()[:3] {
for _, ip := range rootServerList() {
if checkCtx(ctx) != nil {
return nil, ErrContextCanceled
}
@@ -333,7 +343,7 @@ func (r *Resolver) resolveARecord(
msg.SetQuestion(hostname, dns.TypeA)
msg.RecursionDesired = true
for _, ip := range rootServerList()[:3] {
for _, ip := range rootServerList() {
if checkCtx(ctx) != nil {
return nil, ErrContextCanceled
}