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 return nil
}) })
err := group.Run(ctx) err := group.Run(ctx)
if len(response4) == 0 && len(response6) == 0 { if len(response4) > 0 || len(response6) > 0 {
return sortAddresses(response4, response6, options.Strategy), nil
} else if err != nil {
return nil, err return nil, err
} else {
return nil, RcodeError(dns.RcodeNameError)
} }
return sortAddresses(response4, response6, options.Strategy), nil
} }
func (c *Client) ClearCache() { 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) { 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) return nil, RcodeError(response.Rcode)
} }
addresses := make([]netip.Addr, 0, len(response.Answer)) 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)) r.logger.ErrorContext(ctx, E.Cause(err, "lookup failed for ", domain))
} }
} else if len(responseAddrs) == 0 { } else if len(responseAddrs) == 0 {
r.logger.ErrorContext(ctx, "lookup failed for ", domain, ": empty result") panic("unexpected empty result")
err = RcodeNameError
} }
} }
responseAddrs, cached = r.client.LookupCache(domain, options.Strategy) responseAddrs, cached = r.client.LookupCache(domain, options.Strategy)