diff options
-rw-r--r-- | middleware/replacer.go | 8 | ||||
-rw-r--r-- | server/server.go | 9 |
2 files changed, 9 insertions, 8 deletions
diff --git a/middleware/replacer.go b/middleware/replacer.go index 2d9f6caa3..9d242fdb9 100644 --- a/middleware/replacer.go +++ b/middleware/replacer.go @@ -48,13 +48,17 @@ func NewReplacer(r *dns.Msg, rr *ResponseRecorder, emptyValue string) Replacer { emptyValue: emptyValue, } if rr != nil { - rep.replacements["{rcode}"] = strconv.Itoa(rr.rcode) + rcode := dns.RcodeToString[rr.rcode] + if rcode == "" { + rcode = strconv.Itoa(rr.rcode) + } + rep.replacements["{rcode}"] = rcode rep.replacements["{size}"] = strconv.Itoa(rr.size) rep.replacements["{latency}"] = time.Since(rr.start).String() } // Header placeholders (case-insensitive) - // TODO(miek): syntax for flags + // TODO(miek): syntax for flags and document it rep.replacements[headerReplacer+"id}"] = strconv.Itoa(int(r.Id)) rep.replacements[headerReplacer+"opcode}"] = strconv.Itoa(int(r.Opcode)) diff --git a/server/server.go b/server/server.go index 28f513b06..827812af7 100644 --- a/server/server.go +++ b/server/server.go @@ -260,7 +260,7 @@ func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { // In case the user doesn't enable error middleware, we still // need to make sure that we stay alive up here if rec := recover(); rec != nil { - // TODO(miek): serverfailure return? + DefaultErrorFunc(w, r, rcode) } }() @@ -286,7 +286,7 @@ func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { if h, ok := s.zones[string(b[:l])]; ok { if r.Question[0].Qtype != dns.TypeDS { rcode, _ := h.stack.ServeDNS(ctx, w, r) - if rcode > 0 { + if rcode == dns.RcodeServerFailure { DefaultErrorFunc(w, r, rcode) } return @@ -300,8 +300,7 @@ func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { // Wildcard match, if we have found nothing try the root zone as a last resort. if h, ok := s.zones["."]; ok { rcode, _ := h.stack.ServeDNS(ctx, w, r) - // TODO(miek): Double check if we have written something. - if rcode > 0 { + if rcode == dns.RcodeServerFailure { DefaultErrorFunc(w, r, rcode) } return @@ -310,8 +309,6 @@ func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { // Still here? Error out with SERVFAIL and some logging remoteHost := w.RemoteAddr().String() DefaultErrorFunc(w, r, dns.RcodeServerFailure) - - fmt.Fprintf(w, "No such zone at %s", s.Addr) log.Printf("[INFO] %s - No such zone at %s (Remote: %s)", q, s.Addr, remoteHost) } |