diff options
author | 2016-03-30 20:52:09 +0100 | |
---|---|---|
committer | 2016-03-30 20:52:09 +0100 | |
commit | 24394f0d4decf683e56ffd9514321fe57418dff1 (patch) | |
tree | 5300bec97fca5c87ee09e0a228c0afeb389fc4d1 /middleware/file/file.go | |
parent | 4a313d67ff6031fec3743ba01e81f4961027ffe8 (diff) | |
parent | 3591e2a6aa1197ac5f63841af7eb587a9873611f (diff) | |
download | coredns-24394f0d4decf683e56ffd9514321fe57418dff1.tar.gz coredns-24394f0d4decf683e56ffd9514321fe57418dff1.tar.zst coredns-24394f0d4decf683e56ffd9514321fe57418dff1.zip |
Merge pull request #58 from miekg/dnssec-serving-nsec
Get positive dnssec stuff going
Diffstat (limited to 'middleware/file/file.go')
-rw-r--r-- | middleware/file/file.go | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/middleware/file/file.go b/middleware/file/file.go index 237515a57..c005b41cc 100644 --- a/middleware/file/file.go +++ b/middleware/file/file.go @@ -39,7 +39,7 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i return xfr.ServeDNS(ctx, w, r) } - rrs, extra, result := z.Lookup(qname, state.QType(), state.Do()) + answer, ns, extra, result := z.Lookup(qname, state.QType(), state.Do()) m := new(dns.Msg) m.SetReply(r) @@ -47,18 +47,17 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i switch result { case Success: - // case? - m.Answer = rrs + m.Answer = answer + m.Ns = ns m.Extra = extra - // Ns section case NameError: + m.Ns = ns m.Rcode = dns.RcodeNameError fallthrough case NoData: - // case? - m.Ns = rrs - default: - // TODO + m.Ns = ns + case ServerFailure: + return dns.RcodeServerFailure, nil } m, _ = state.Scrub(m) w.WriteMsg(m) @@ -78,6 +77,11 @@ func Parse(f io.Reader, origin, fileName string) (*Zone, error) { z.SOA = x.RR.(*dns.SOA) continue } + if x.RR.Header().Rrtype == dns.TypeRRSIG { + if x, ok := x.RR.(*dns.RRSIG); ok && x.TypeCovered == dns.TypeSOA { + z.SIG = append(z.SIG, x) + } + } z.Insert(x.RR) } return z, nil |