dnsserver.Server: Export timeout values (#7497)

Plugins need access to timeout values that are actually used by
TCP dns.Server

Signed-off-by: Ilya Kulakov <kulakov.ilya@gmail.com>
This commit is contained in:
Ilya Kulakov
2025-09-09 19:06:44 -07:00
committed by GitHub
parent d2e0e6a459
commit c90e70339c
4 changed files with 20 additions and 20 deletions

View File

@@ -32,7 +32,10 @@ import (
// the same address and the listener may be stopped for // the same address and the listener may be stopped for
// graceful termination (POSIX only). // graceful termination (POSIX only).
type Server struct { type Server struct {
Addr string // Address we listen on Addr string // Address we listen on
IdleTimeout time.Duration // Idle timeout for TCP
ReadTimeout time.Duration // Read timeout for TCP
WriteTimeout time.Duration // Write timeout for TCP
server [2]*dns.Server // 0 is a net.Listener, 1 is a net.PacketConn (a *UDPConn) in our case. server [2]*dns.Server // 0 is a net.Listener, 1 is a net.PacketConn (a *UDPConn) in our case.
m sync.Mutex // protects the servers m sync.Mutex // protects the servers
@@ -44,9 +47,6 @@ type Server struct {
debug bool // disable recover() debug bool // disable recover()
stacktrace bool // enable stacktrace in recover error log stacktrace bool // enable stacktrace in recover error log
classChaos bool // allow non-INET class queries classChaos bool // allow non-INET class queries
idleTimeout time.Duration // Idle timeout for TCP
readTimeout time.Duration // Read timeout for TCP
writeTimeout time.Duration // Write timeout for TCP
tsigSecret map[string]string tsigSecret map[string]string
} }
@@ -63,9 +63,9 @@ func NewServer(addr string, group []*Config) (*Server, error) {
Addr: addr, Addr: addr,
zones: make(map[string][]*Config), zones: make(map[string][]*Config),
graceTimeout: 5 * time.Second, graceTimeout: 5 * time.Second,
idleTimeout: 10 * time.Second, IdleTimeout: 10 * time.Second,
readTimeout: 3 * time.Second, ReadTimeout: 3 * time.Second,
writeTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second,
tsigSecret: make(map[string]string), tsigSecret: make(map[string]string),
} }
@@ -89,13 +89,13 @@ func NewServer(addr string, group []*Config) (*Server, error) {
// set timeouts // set timeouts
if site.ReadTimeout != 0 { if site.ReadTimeout != 0 {
s.readTimeout = site.ReadTimeout s.ReadTimeout = site.ReadTimeout
} }
if site.WriteTimeout != 0 { if site.WriteTimeout != 0 {
s.writeTimeout = site.WriteTimeout s.WriteTimeout = site.WriteTimeout
} }
if site.IdleTimeout != 0 { if site.IdleTimeout != 0 {
s.idleTimeout = site.IdleTimeout s.IdleTimeout = site.IdleTimeout
} }
// copy tsig secrets // copy tsig secrets
@@ -152,10 +152,10 @@ func (s *Server) Serve(l net.Listener) error {
Net: "tcp", Net: "tcp",
TsigSecret: s.tsigSecret, TsigSecret: s.tsigSecret,
MaxTCPQueries: tcpMaxQueries, MaxTCPQueries: tcpMaxQueries,
ReadTimeout: s.readTimeout, ReadTimeout: s.ReadTimeout,
WriteTimeout: s.writeTimeout, WriteTimeout: s.WriteTimeout,
IdleTimeout: func() time.Duration { IdleTimeout: func() time.Duration {
return s.idleTimeout return s.IdleTimeout
}, },
Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) { Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) {
ctx := context.WithValue(context.Background(), Key{}, s) ctx := context.WithValue(context.Background(), Key{}, s)

View File

@@ -76,9 +76,9 @@ func NewServerHTTPS(addr string, group []*Config) (*ServerHTTPS, error) {
} }
srv := &http.Server{ srv := &http.Server{
ReadTimeout: s.readTimeout, ReadTimeout: s.ReadTimeout,
WriteTimeout: s.writeTimeout, WriteTimeout: s.WriteTimeout,
IdleTimeout: s.idleTimeout, IdleTimeout: s.IdleTimeout,
ErrorLog: stdlog.New(&loggerAdapter{}, "", 0), ErrorLog: stdlog.New(&loggerAdapter{}, "", 0),
} }
sh := &ServerHTTPS{ sh := &ServerHTTPS{

View File

@@ -84,7 +84,7 @@ func NewServerQUIC(addr string, group []*Config) (*ServerQUIC, error) {
} }
var quicConfig = &quic.Config{ var quicConfig = &quic.Config{
MaxIdleTimeout: s.idleTimeout, MaxIdleTimeout: s.IdleTimeout,
MaxIncomingStreams: int64(maxStreams), MaxIncomingStreams: int64(maxStreams),
MaxIncomingUniStreams: int64(maxStreams), MaxIncomingUniStreams: int64(maxStreams),
// Enable 0-RTT by default for all connections on the server-side. // Enable 0-RTT by default for all connections on the server-side.

View File

@@ -54,10 +54,10 @@ func (s *ServerTLS) Serve(l net.Listener) error {
s.server[tcp] = &dns.Server{Listener: l, s.server[tcp] = &dns.Server{Listener: l,
Net: "tcp-tls", Net: "tcp-tls",
MaxTCPQueries: tlsMaxQueries, MaxTCPQueries: tlsMaxQueries,
ReadTimeout: s.readTimeout, ReadTimeout: s.ReadTimeout,
WriteTimeout: s.writeTimeout, WriteTimeout: s.WriteTimeout,
IdleTimeout: func() time.Duration { IdleTimeout: func() time.Duration {
return s.idleTimeout return s.IdleTimeout
}, },
Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) { Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) {
ctx := context.WithValue(context.Background(), Key{}, s.Server) ctx := context.WithValue(context.Background(), Key{}, s.Server)