diff --git a/middleware/etcd/handler.go b/middleware/etcd/handler.go index 2de6fb629..4758f8aab 100644 --- a/middleware/etcd/handler.go +++ b/middleware/etcd/handler.go @@ -42,10 +42,7 @@ func (e *Etcd) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) ( if opt.Debug != "" { r.Question[0].Name = opt.Debug } - if e.Fallthrough { - return middleware.NextOrFailure(e.Name(), e.Next, ctx, w, r) - } - return dns.RcodeServerFailure, nil + return middleware.NextOrFailure(e.Name(), e.Next, ctx, w, r) } var ( @@ -88,6 +85,9 @@ func (e *Etcd) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) ( } if e.IsNameError(err) { + if e.Fallthrough { + return middleware.NextOrFailure(e.Name(), e.Next, ctx, w, r) + } // Make err nil when returning here, so we don't log spam for NXDOMAIN. return middleware.BackendError(e, zone, dns.RcodeNameError, state, debug, nil /* err */, opt) } diff --git a/middleware/kubernetes/handler.go b/middleware/kubernetes/handler.go index b6cc703b7..58aecfe1a 100644 --- a/middleware/kubernetes/handler.go +++ b/middleware/kubernetes/handler.go @@ -19,10 +19,7 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M zone := middleware.Zones(k.Zones).Matches(state.Name()) if zone == "" { - if k.Fallthrough { - return middleware.NextOrFailure(k.Name(), k.Next, ctx, w, r) - } - return dns.RcodeServerFailure, nil + return middleware.NextOrFailure(k.Name(), k.Next, ctx, w, r) } state.Zone = zone