@@ -3,6 +3,7 @@ package client
3
3
import (
4
4
"errors"
5
5
"net"
6
+ "strings"
6
7
"time"
7
8
8
9
"github.com/miekg/dns"
@@ -74,6 +75,10 @@ func (c *Client) ParallelQuery(m *dns.Msg, servers []Server) Responses {
74
75
return rs
75
76
}
76
77
78
+ func domainEqual (d1 , d2 string ) bool {
79
+ return strings .ToLower (dns .Fqdn (d1 )) == strings .ToLower (dns .Fqdn (d2 ))
80
+ }
81
+
77
82
// RecursiveQuery performs a recursive query by querying all the available name
78
83
// servers to gather statistics.
79
84
func (c * Client ) RecursiveQuery (m * dns.Msg , tracer Tracer ) (r * dns.Msg , rtt time.Duration , err error ) {
@@ -104,7 +109,7 @@ func (c *Client) RecursiveQuery(m *dns.Msg, tracer Tracer) (r *dns.Msg, rtt time
104
109
var deleg bool
105
110
var cname string
106
111
for _ , rr := range r .Answer {
107
- if rr .Header ().Name == qname && rr .Header ().Rrtype == qtype {
112
+ if domainEqual ( rr .Header ().Name , qname ) && rr .Header ().Rrtype == qtype {
108
113
done = true
109
114
break
110
115
} else if rr .Header ().Rrtype == dns .TypeCNAME {
@@ -134,7 +139,7 @@ func (c *Client) RecursiveQuery(m *dns.Msg, tracer Tracer) (r *dns.Msg, rtt time
134
139
name := ns .Header ().Name
135
140
var addrs []string
136
141
for _ , rr := range r .Extra {
137
- if rr .Header ().Name == ns .Ns {
142
+ if domainEqual ( rr .Header ().Name , ns .Ns ) {
138
143
switch a := rr .(type ) {
139
144
case * dns.A :
140
145
addrs = append (addrs , a .A .String ())
0 commit comments