mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
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:
@@ -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)
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user