@@ -80,7 +80,7 @@ func main() {
80
80
m .Extra = append (m .Extra , o )
81
81
82
82
for i := 1 ; i < 100 ; i ++ {
83
- servers := delegs .Get (name )
83
+ deleg , servers := delegs .Get (name )
84
84
m .SetQuestion (name , rtype )
85
85
rs := c .ParallelQuery (m , servers )
86
86
fr := rs .Fastest ()
@@ -143,28 +143,25 @@ func main() {
143
143
fmt .Printf ("%s %d NS %s (%s)\n " , ns .Header ().Name , ns .Header ().Ttl , ns .Ns , glue )
144
144
}
145
145
146
- var cname string
147
- var done bool
148
- for _ , rr := range r .Answer {
149
- if rr .Header ().Rrtype == rtype && rr .Header ().Name == name {
150
- if ! done {
151
- fmt .Println ()
146
+ if len (r .Answer ) > 0 {
147
+ var cname string
148
+ fmt .Println ()
149
+ for _ , rr := range r .Answer {
150
+ if rr .Header ().Rrtype == dns .TypeCNAME {
151
+ cname = rr .Header ().Name
152
+ name = rr .(* dns.CNAME ).Target
153
+ } else {
154
+ fmt .Println (rr )
152
155
}
153
- fmt .Println (rr )
154
- done = true
155
- } else if rr .Header ().Rrtype == dns .TypeCNAME {
156
- cname = rr .Header ().Name
157
- name = rr .(* dns.CNAME ).Target
158
156
}
159
- }
160
- if done {
161
- return
162
- } else if cname != "" {
163
- fmt .Printf (col ("\n ~ following CNAME %s -> %s\n " , cBlue ), cname , name )
164
- continue
157
+ if cname != "" {
158
+ fmt .Printf (col ("~ following CNAME %s -> %s\n " , cBlue ), cname , name )
159
+ continue
160
+ }
161
+ break
165
162
}
166
163
167
- if len (r .Ns ) == 0 {
164
+ if label , _ := delegs . Get ( name ); len (r .Ns ) == 0 || deleg == label {
168
165
break
169
166
}
170
167
}
0 commit comments