aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar dilyevsky <ilyevsky@gmail.com> 2018-09-17 10:21:12 -0700
committerGravatar GitHub <noreply@github.com> 2018-09-17 10:21:12 -0700
commit4ac06a342b48e25cf79773a7d9d1cf57f0f6c564 (patch)
tree10bbee2653b802d0e1c07b8f8d077d50f953e1e3
parent063999551d2d7ac58a66c1c376668ac2d44af379 (diff)
downloadcoredns-4ac06a342b48e25cf79773a7d9d1cf57f0f6c564.tar.gz
coredns-4ac06a342b48e25cf79773a7d9d1cf57f0f6c564.tar.zst
coredns-4ac06a342b48e25cf79773a7d9d1cf57f0f6c564.zip
[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).
-rw-r--r--plugin/proxy/dns.go13
1 files 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()
}