diff --git a/middleware/etcd/handler.go b/middleware/etcd/handler.go index 8e15c1b1a..38e1b51cd 100644 --- a/middleware/etcd/handler.go +++ b/middleware/etcd/handler.go @@ -30,6 +30,9 @@ func (e Etcd) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i zone := middleware.Zones(e.Zones).Matches(state.Name()) if zone == "" { + if e.Next == nil { + return dns.RcodeServerFailure, nil + } return e.Next.ServeDNS(ctx, w, r) } diff --git a/middleware/etcd/stub_test.go b/middleware/etcd/stub_test.go index d1eee5b61..ed3c49a29 100644 --- a/middleware/etcd/stub_test.go +++ b/middleware/etcd/stub_test.go @@ -32,6 +32,10 @@ func TestStubLookup(t *testing.T) { continue } resp := rec.Msg() + if resp == nil { + // etcd not running? + continue + } sort.Sort(test.RRSet(resp.Answer)) sort.Sort(test.RRSet(resp.Ns))