diff options
author | 2017-01-11 21:23:57 +0000 | |
---|---|---|
committer | 2017-01-11 21:23:57 +0000 | |
commit | 0c3ad499d87b4ee4e43a49ac8c8102e6369d7e19 (patch) | |
tree | e0952593e0a6ac14ff236e4f37ff82476fb38a2f /middleware/proxy/client.go | |
parent | 0ee88d300794a9c77d96c57097b72743758e8bd4 (diff) | |
download | coredns-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.go | 6 |
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 |