diff --git a/app/dns/server.go b/app/dns/server.go index 22ecd9559..9432d9952 100644 --- a/app/dns/server.go +++ b/app/dns/server.go @@ -196,6 +196,14 @@ func toNetIP(ips []net.Address) []net.IP { } func (s *Server) lookupIPInternal(domain string, option IPOption) ([]net.IP, error) { + if len(domain) == 0 { + return nil, newError("empty domain name") + } + + if domain[len(domain)-1] == '.' { + domain = domain[:len(domain)-1] + } + ips := s.lookupStatic(domain, option, 0) if ips != nil && ips[0].Family().IsIP() { return toNetIP(ips), nil diff --git a/proxy/dns/dns.go b/proxy/dns/dns.go index 653a3c678..25ef76906 100644 --- a/proxy/dns/dns.go +++ b/proxy/dns/dns.go @@ -216,18 +216,18 @@ func (h *Handler) handleIPQuery(id uint16, qType dnsmessage.Type, domain string, RCode: dnsmessage.RCodeSuccess, Response: true, }) - builder.StartAnswers() + common.Must(builder.StartAnswers()) rHeader := dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName(domain), Class: dnsmessage.ClassINET, TTL: 600} for _, ip := range ips { if len(ip) == net.IPv4len { var r dnsmessage.AResource copy(r.A[:], ip) - builder.AResource(rHeader, r) + common.Must(builder.AResource(rHeader, r)) } else { var r dnsmessage.AAAAResource copy(r.AAAA[:], ip) - builder.AAAAResource(rHeader, r) + common.Must(builder.AAAAResource(rHeader, r)) } } msgBytes, err := builder.Finish()