aboutsummaryrefslogtreecommitdiff
path: root/plugin/proxy/proxy.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/proxy/proxy.go')
-rw-r--r--plugin/proxy/proxy.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/plugin/proxy/proxy.go b/plugin/proxy/proxy.go
index a5df0b95c..af61f424f 100644
--- a/plugin/proxy/proxy.go
+++ b/plugin/proxy/proxy.go
@@ -100,6 +100,14 @@ func (p Proxy) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (
taperr := toDnstap(ctx, host.Name, upstream.Exchanger(), state, reply, start)
if backendErr == nil {
+
+ // Check if the reply is correct; if not return FormErr.
+ if !state.Match(reply) {
+ formerr := state.ErrorMessage(dns.RcodeFormatError)
+ w.WriteMsg(formerr)
+ return 0, taperr
+ }
+
w.WriteMsg(reply)
RequestDuration.WithLabelValues(state.Proto(), upstream.Exchanger().Protocol(), familyToString(state.Family()), host.Name).Observe(time.Since(start).Seconds())