fix(#2211): problem that AAAA query returns A result

This commit is contained in:
mzz2017
2020-03-12 00:42:29 +08:00
committed by kslr
parent fa657b8681
commit 4a663f2b25
2 changed files with 9 additions and 1 deletions
+1
View File
@@ -1,2 +1,3 @@
*.DS_Store
bazel-*
.idea
+8 -1
View File
@@ -185,7 +185,6 @@ func (s *DoHNameServer) Cleanup() error {
func (s *DoHNameServer) updateIP(req *dnsRequest, ipRec *IPRecord) {
elapsed := time.Since(req.start)
newError(s.name, " got answere: ", req.domain, " ", req.reqType, " -> ", ipRec.IP, " ", elapsed).AtInfo().WriteToLog()
s.Lock()
rec := s.ips[req.domain]
@@ -198,11 +197,19 @@ func (s *DoHNameServer) updateIP(req *dnsRequest, ipRec *IPRecord) {
updated = true
}
case dnsmessage.TypeAAAA:
addr := make([]net.Address, 0)
for _, ip := range ipRec.IP {
if len(ip.IP()) == net.IPv6len {
addr = append(addr, ip)
}
}
ipRec.IP = addr
if isNewer(rec.AAAA, ipRec) {
rec.AAAA = ipRec
updated = true
}
}
newError(s.name, " got answere: ", req.domain, " ", req.reqType, " -> ", ipRec.IP, " ", elapsed).AtInfo().WriteToLog()
if updated {
s.ips[req.domain] = rec