From 594c6d7522087f81d1e43f47efe20688b9e44598 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Thu, 7 Sep 2017 13:47:58 +0100 Subject: [PATCH] mw/federation: use original qname in all responses (#1033) Maybe a fix for #1031 ? --- middleware/federation/federation.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/middleware/federation/federation.go b/middleware/federation/federation.go index 700b74685..bc74d9fc9 100644 --- a/middleware/federation/federation.go +++ b/middleware/federation/federation.go @@ -73,12 +73,13 @@ func (f *Federation) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns. if !middleware.ClientWrite(ret) { // something went wrong + r.Question[0].Name = qname return ret, err } if m := nw.Msg; m.Rcode != dns.RcodeNameError { - // If positive answer we need to substitute the orinal qname in question and answer. - r.Question[0].Name = qname + // If positive answer we need to substitute the original qname in the answer. + m.Question[0].Name = qname for _, a := range m.Answer { a.Header().Name = qname } @@ -93,6 +94,7 @@ func (f *Federation) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns. // Still here, we've seen NXDOMAIN and need to perform federation. service, err := f.Federations(state, label, f.f[label]) // state references Req which has updated qname if err != nil { + r.Question[0].Name = qname return dns.RcodeServerFailure, err }