Fix dns cache in lookup

This commit is contained in:
Mahdi
2025-10-09 07:18:46 -07:00
committed by 世界
parent 41b30c91d9
commit 6557bd7029

View File

@@ -214,7 +214,7 @@ func (c *Client) Exchange(ctx context.Context, transport adapter.DNSTransport, m
response.Answer = append(response.Answer, validResponse.Answer...) response.Answer = append(response.Answer, validResponse.Answer...)
} }
}*/ }*/
disableCache = disableCache || response.Rcode != dns.RcodeSuccess || len(response.Answer) == 0 disableCache = disableCache || (response.Rcode != dns.RcodeSuccess && response.Rcode != dns.RcodeNameError) || len(response.Answer) == 0
if responseChecker != nil { if responseChecker != nil {
var rejected bool var rejected bool
// TODO: add accept_any rule and support to check response instead of addresses // TODO: add accept_any rule and support to check response instead of addresses
@@ -364,14 +364,18 @@ func (c *Client) LookupCache(domain string, strategy C.DomainStrategy) ([]netip.
Qtype: dns.TypeA, Qtype: dns.TypeA,
Qclass: dns.ClassINET, Qclass: dns.ClassINET,
}, nil) }, nil)
if response4 == nil {
return nil, false
}
response6, _ := c.loadResponse(dns.Question{ response6, _ := c.loadResponse(dns.Question{
Name: dnsName, Name: dnsName,
Qtype: dns.TypeAAAA, Qtype: dns.TypeAAAA,
Qclass: dns.ClassINET, Qclass: dns.ClassINET,
}, nil) }, nil)
if response4 != nil || response6 != nil { if response6 == nil {
return sortAddresses(MessageToAddresses(response4), MessageToAddresses(response6), strategy), true return nil, false
} }
return sortAddresses(MessageToAddresses(response4), MessageToAddresses(response6), strategy), true
} }
return nil, false return nil, false
} }