diff --git a/doq.go b/doq.go index f0a7bc1..365fa10 100644 --- a/doq.go +++ b/doq.go @@ -23,7 +23,7 @@ func (r *doqResolver) Resolve(ctx context.Context, msg *dns.Msg) (*dns.Msg, erro ip := r.uc.BootstrapIP if ip == "" { dnsTyp := uint16(0) - if len(msg.Question) > 0 { + if msg != nil && len(msg.Question) > 0 { dnsTyp = msg.Question[0].Qtype } ip = r.uc.bootstrapIPForDNSType(dnsTyp) diff --git a/dot.go b/dot.go index 2e11a8f..68cf2e1 100644 --- a/dot.go +++ b/dot.go @@ -20,7 +20,7 @@ func (r *dotResolver) Resolve(ctx context.Context, msg *dns.Msg) (*dns.Msg, erro // regardless of the machine DNS status. dialer := newDialer(net.JoinHostPort(bootstrapDNS, "53")) dnsTyp := uint16(0) - if len(msg.Question) > 0 { + if msg != nil && len(msg.Question) > 0 { dnsTyp = msg.Question[0].Qtype } diff --git a/resolver.go b/resolver.go index 89b98b6..1e07c78 100644 --- a/resolver.go +++ b/resolver.go @@ -117,7 +117,7 @@ func (r *legacyResolver) Resolve(ctx context.Context, msg *dns.Msg) (*dns.Msg, e // See comment in (*dotResolver).resolve method. dialer := newDialer(net.JoinHostPort(bootstrapDNS, "53")) dnsTyp := uint16(0) - if len(msg.Question) > 0 { + if msg != nil && len(msg.Question) > 0 { dnsTyp = msg.Question[0].Qtype } _, udpNet := r.uc.netForDNSType(dnsTyp)