diff --git a/internal/dns/dns.go b/internal/dns/dns.go index 89e5529..9bdc6bb 100644 --- a/internal/dns/dns.go +++ b/internal/dns/dns.go @@ -546,15 +546,15 @@ func (s *Server) handleRequest(w dns.ResponseWriter, r *dns.Msg) { } if len(in.Answer) > 1 { if in.Answer[0].Header().Rrtype == dns.TypeCNAME { - for _, rr := range in.Answer { + for i, rr := range in.Answer { if rr != nil && rr.Header() != nil && rr.Header().Rrtype == dns.TypeA { - if newRR, err := s.resolveSubname("", dns.Question{strings.ToLower(rr.Header().Name), dns.TypeA, dns.ClassINET}); err == nil { - in.Answer[len(in.Answer)-1] = newRR + newRR, err := s.resolveSubname(string(s.domain), dns.Question{strings.ToLower(rr.Header().Name), dns.TypeA, dns.ClassINET}) + if err == nil && newRR != nil { + in.Answer[i] = newRR } } } } - } w.WriteMsg(in) if idx > 0 {