Fix DNS Lookup

This commit is contained in:
世界 2025-04-22 23:08:24 +08:00
parent 7a109569f9
commit 284f10b296
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
2 changed files with 7 additions and 5 deletions

View File

@ -268,10 +268,13 @@ func (c *Client) Lookup(ctx context.Context, transport adapter.DNSTransport, dom
return nil
})
err := group.Run(ctx)
if len(response4) == 0 && len(response6) == 0 {
return nil, err
}
if len(response4) > 0 || len(response6) > 0 {
return sortAddresses(response4, response6, options.Strategy), nil
} else if err != nil {
return nil, err
} else {
return nil, RcodeError(dns.RcodeNameError)
}
}
func (c *Client) ClearCache() {
@ -483,7 +486,7 @@ func (c *Client) loadResponse(question dns.Question, transport adapter.DNSTransp
}
func MessageToAddresses(response *dns.Msg) ([]netip.Addr, error) {
if response.Rcode != dns.RcodeSuccess && response.Rcode != dns.RcodeNameError {
if response.Rcode != dns.RcodeSuccess {
return nil, RcodeError(response.Rcode)
}
addresses := make([]netip.Addr, 0, len(response.Answer))

View File

@ -332,8 +332,7 @@ func (r *Router) Lookup(ctx context.Context, domain string, options adapter.DNSQ
r.logger.ErrorContext(ctx, E.Cause(err, "lookup failed for ", domain))
}
} else if len(responseAddrs) == 0 {
r.logger.ErrorContext(ctx, "lookup failed for ", domain, ": empty result")
err = RcodeNameError
panic("unexpected empty result")
}
}
responseAddrs, cached = r.client.LookupCache(domain, options.Strategy)