From 4ac06a342b48e25cf79773a7d9d1cf57f0f6c564 Mon Sep 17 00:00:00 2001 From: dilyevsky Date: Mon, 17 Sep 2018 10:21:12 -0700 Subject: [PATCH] [plugin/proxy]: Return on WriteMsg err. (#2096) * [plugin/proxy]: Return on WriteMsg err. Followup PR on the heels of #2050. Short-circut and log on error from `WriteMsg`. This will prevent code getting stuck on `ReadMsg` and allow for easier debugging. Also simply the `ReadMsg` calling code a little - remove double `Close` (already called above). --- plugin/proxy/dns.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/plugin/proxy/dns.go b/plugin/proxy/dns.go index c1aa7f190..a96762c1d 100644 --- a/plugin/proxy/dns.go +++ b/plugin/proxy/dns.go @@ -89,15 +89,12 @@ func exchange(m *dns.Msg, co net.Conn) (*dns.Msg, error) { writeDeadline := time.Now().Add(defaultTimeout) dnsco.SetWriteDeadline(writeDeadline) - dnsco.WriteMsg(m) + if err := dnsco.WriteMsg(m); err != nil { + log.Debugf("Failed to send message: %v", err) + return nil, err + } readDeadline := time.Now().Add(defaultTimeout) co.SetReadDeadline(readDeadline) - r, err := dnsco.ReadMsg() - - dnsco.Close() - if r == nil { - return nil, err - } - return r, err + return dnsco.ReadMsg() }