From c90e70339c145c967958b206e7c747c6dc9d1324 Mon Sep 17 00:00:00 2001 From: Ilya Kulakov Date: Tue, 9 Sep 2025 19:06:44 -0700 Subject: [PATCH] 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 --- core/dnsserver/server.go | 26 +++++++++++++------------- core/dnsserver/server_https.go | 6 +++--- core/dnsserver/server_quic.go | 2 +- core/dnsserver/server_tls.go | 6 +++--- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/core/dnsserver/server.go b/core/dnsserver/server.go index 2107e8d01..a9fa69a62 100644 --- a/core/dnsserver/server.go +++ b/core/dnsserver/server.go @@ -32,7 +32,10 @@ import ( // the same address and the listener may be stopped for // graceful termination (POSIX only). 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. m sync.Mutex // protects the servers @@ -44,9 +47,6 @@ type Server struct { debug bool // disable recover() stacktrace bool // enable stacktrace in recover error log 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 } @@ -63,9 +63,9 @@ func NewServer(addr string, group []*Config) (*Server, error) { Addr: addr, zones: make(map[string][]*Config), graceTimeout: 5 * time.Second, - idleTimeout: 10 * time.Second, - readTimeout: 3 * time.Second, - writeTimeout: 5 * time.Second, + IdleTimeout: 10 * time.Second, + ReadTimeout: 3 * time.Second, + WriteTimeout: 5 * time.Second, tsigSecret: make(map[string]string), } @@ -89,13 +89,13 @@ func NewServer(addr string, group []*Config) (*Server, error) { // set timeouts if site.ReadTimeout != 0 { - s.readTimeout = site.ReadTimeout + s.ReadTimeout = site.ReadTimeout } if site.WriteTimeout != 0 { - s.writeTimeout = site.WriteTimeout + s.WriteTimeout = site.WriteTimeout } if site.IdleTimeout != 0 { - s.idleTimeout = site.IdleTimeout + s.IdleTimeout = site.IdleTimeout } // copy tsig secrets @@ -152,10 +152,10 @@ func (s *Server) Serve(l net.Listener) error { Net: "tcp", TsigSecret: s.tsigSecret, MaxTCPQueries: tcpMaxQueries, - ReadTimeout: s.readTimeout, - WriteTimeout: s.writeTimeout, + ReadTimeout: s.ReadTimeout, + WriteTimeout: s.WriteTimeout, IdleTimeout: func() time.Duration { - return s.idleTimeout + return s.IdleTimeout }, Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) { ctx := context.WithValue(context.Background(), Key{}, s) diff --git a/core/dnsserver/server_https.go b/core/dnsserver/server_https.go index 2e5d22bdf..cf84e8c35 100644 --- a/core/dnsserver/server_https.go +++ b/core/dnsserver/server_https.go @@ -76,9 +76,9 @@ func NewServerHTTPS(addr string, group []*Config) (*ServerHTTPS, error) { } srv := &http.Server{ - ReadTimeout: s.readTimeout, - WriteTimeout: s.writeTimeout, - IdleTimeout: s.idleTimeout, + ReadTimeout: s.ReadTimeout, + WriteTimeout: s.WriteTimeout, + IdleTimeout: s.IdleTimeout, ErrorLog: stdlog.New(&loggerAdapter{}, "", 0), } sh := &ServerHTTPS{ diff --git a/core/dnsserver/server_quic.go b/core/dnsserver/server_quic.go index 2e42155a9..531cbd82d 100644 --- a/core/dnsserver/server_quic.go +++ b/core/dnsserver/server_quic.go @@ -84,7 +84,7 @@ func NewServerQUIC(addr string, group []*Config) (*ServerQUIC, error) { } var quicConfig = &quic.Config{ - MaxIdleTimeout: s.idleTimeout, + MaxIdleTimeout: s.IdleTimeout, MaxIncomingStreams: int64(maxStreams), MaxIncomingUniStreams: int64(maxStreams), // Enable 0-RTT by default for all connections on the server-side. diff --git a/core/dnsserver/server_tls.go b/core/dnsserver/server_tls.go index 4c6faa14c..83c560e69 100644 --- a/core/dnsserver/server_tls.go +++ b/core/dnsserver/server_tls.go @@ -54,10 +54,10 @@ func (s *ServerTLS) Serve(l net.Listener) error { s.server[tcp] = &dns.Server{Listener: l, Net: "tcp-tls", MaxTCPQueries: tlsMaxQueries, - ReadTimeout: s.readTimeout, - WriteTimeout: s.writeTimeout, + ReadTimeout: s.ReadTimeout, + WriteTimeout: s.WriteTimeout, IdleTimeout: func() time.Duration { - return s.idleTimeout + return s.IdleTimeout }, Handler: dns.HandlerFunc(func(w dns.ResponseWriter, r *dns.Msg) { ctx := context.WithValue(context.Background(), Key{}, s.Server)