Browse Source

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

mzz2017 5 years ago
parent
commit
4a663f2b25
2 changed files with 9 additions and 1 deletions
  1. 1 0
      .gitignore
  2. 8 1
      app/dns/dohdns.go

+ 1 - 0
.gitignore

@@ -1,2 +1,3 @@
 *.DS_Store
 *.DS_Store
 bazel-*
 bazel-*
+.idea

+ 8 - 1
app/dns/dohdns.go

@@ -185,7 +185,6 @@ func (s *DoHNameServer) Cleanup() error {
 
 
 func (s *DoHNameServer) updateIP(req *dnsRequest, ipRec *IPRecord) {
 func (s *DoHNameServer) updateIP(req *dnsRequest, ipRec *IPRecord) {
 	elapsed := time.Since(req.start)
 	elapsed := time.Since(req.start)
-	newError(s.name, " got answere: ", req.domain, " ", req.reqType, " -> ", ipRec.IP, " ", elapsed).AtInfo().WriteToLog()
 
 
 	s.Lock()
 	s.Lock()
 	rec := s.ips[req.domain]
 	rec := s.ips[req.domain]
@@ -198,11 +197,19 @@ func (s *DoHNameServer) updateIP(req *dnsRequest, ipRec *IPRecord) {
 			updated = true
 			updated = true
 		}
 		}
 	case dnsmessage.TypeAAAA:
 	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) {
 		if isNewer(rec.AAAA, ipRec) {
 			rec.AAAA = ipRec
 			rec.AAAA = ipRec
 			updated = true
 			updated = true
 		}
 		}
 	}
 	}
+	newError(s.name, " got answere: ", req.domain, " ", req.reqType, " -> ", ipRec.IP, " ", elapsed).AtInfo().WriteToLog()
 
 
 	if updated {
 	if updated {
 		s.ips[req.domain] = rec
 		s.ips[req.domain] = rec