aboutsummaryrefslogtreecommitdiff
path: root/middleware/proxy/client.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-01-11 21:23:57 +0000
committerGravatar GitHub <noreply@github.com> 2017-01-11 21:23:57 +0000
commit0c3ad499d87b4ee4e43a49ac8c8102e6369d7e19 (patch)
treee0952593e0a6ac14ff236e4f37ff82476fb38a2f /middleware/proxy/client.go
parent0ee88d300794a9c77d96c57097b72743758e8bd4 (diff)
downloadcoredns-0c3ad499d87b4ee4e43a49ac8c8102e6369d7e19.tar.gz
coredns-0c3ad499d87b4ee4e43a49ac8c8102e6369d7e19.tar.zst
coredns-0c3ad499d87b4ee4e43a49ac8c8102e6369d7e19.zip
middleware/proxy: add read/writeDeadline (#477)
Add deadline to break the connection. We use the default of 5 seconds. After this the backend is marked unhealthy and not used for some time. Fixes #467
Diffstat (limited to 'middleware/proxy/client.go')
-rw-r--r--middleware/proxy/client.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/middleware/proxy/client.go b/middleware/proxy/client.go
index b02e8864b..56accd659 100644
--- a/middleware/proxy/client.go
+++ b/middleware/proxy/client.go
@@ -83,8 +83,14 @@ func (c *client) exchange(m *dns.Msg, co net.Conn) (dns.Msg, error) {
dnsco := &dns.Conn{Conn: co, UDPSize: udpsize}
+ writeDeadline := time.Now().Add(defaultTimeout)
+ dnsco.SetWriteDeadline(writeDeadline)
dnsco.WriteMsg(m)
+
+ readDeadline := time.Now().Add(defaultTimeout)
+ co.SetReadDeadline(readDeadline)
r, err := dnsco.ReadMsg()
+
dnsco.Close()
if r == nil {
return dns.Msg{}, err