@@ -620,25 +620,29 @@ func fetchDNSCryptServerInfo(proxy *Proxy, name string, stamp stamps.ServerStamp
620620 & name ,
621621 false ,
622622 )
623- if err == nil {
624- if msg .Id != 0xcafe {
625- dlog .Infof ("[%s] handling of DNS message identifiers is broken" , name )
626- }
627- for _ , rr := range msg .Answer {
628- if rr .Header ().Rrtype == dns .TypeA || rr .Header ().Rrtype == dns .TypeAAAA {
629- dlog .Warnf ("[%s] may be a lying resolver -- skipping" , name )
630- return ServerInfo {}, fmt .Errorf ("[%s] unexpected record: [%s]" , name , rr .String ())
623+ if err == nil && len (msg .Question ) > 0 {
624+ question := msg .Question [0 ]
625+ if question .Qtype == query .Question [0 ].Qtype && strings .EqualFold (question .Name , query .Question [0 ].Name ) {
626+ dlog .Debugf ("[%s] also serves plaintext DNS" , name )
627+ if msg .Id != 0xcafe {
628+ dlog .Infof ("[%s] handling of DNS message identifiers is broken" , name )
631629 }
632- }
633- for _ , rr := range msg .Extra {
634- if rr .Header ().Rrtype == dns .TypeTXT {
635- dlog .Warnf ("[%s] may be a dummy resolver -- skipping" , name )
636- txts := rr .(* dns.TXT ).Txt
637- cause := ""
638- if len (txts ) > 0 {
639- cause = txts [0 ]
630+ for _ , rr := range msg .Answer {
631+ if rr .Header ().Rrtype == dns .TypeA || rr .Header ().Rrtype == dns .TypeAAAA {
632+ dlog .Warnf ("[%s] may be a lying resolver -- skipping" , name )
633+ return ServerInfo {}, fmt .Errorf ("[%s] unexpected record: [%s]" , name , rr .String ())
634+ }
635+ }
636+ for _ , rr := range msg .Extra {
637+ if rr .Header ().Rrtype == dns .TypeTXT {
638+ dlog .Warnf ("[%s] may be a dummy resolver -- skipping" , name )
639+ txts := rr .(* dns.TXT ).Txt
640+ cause := ""
641+ if len (txts ) > 0 {
642+ cause = txts [0 ]
643+ }
644+ return ServerInfo {}, fmt .Errorf ("[%s] unexpected record: [%s]" , name , cause )
640645 }
641- return ServerInfo {}, fmt .Errorf ("[%s] unexpected record: [%s]" , name , cause )
642646 }
643647 }
644648 }
0 commit comments