Skip to content

Commit

Permalink
proxy: imp code
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed May 23, 2024
1 parent 9eef793 commit d674445
Showing 1 changed file with 13 additions and 19 deletions.
32 changes: 13 additions & 19 deletions proxy/lookup.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,6 @@ type lookupResult struct {
err error
}

// ansAddrs returns a slice of addresses collected from resp answers. resp must
// not be nil.
func (lr *lookupResult) ansAddrs() (addrs []netip.Addr) {
for _, ans := range lr.resp.Answer {
a := proxyutil.IPFromRR(ans)
if a != (netip.Addr{}) {
addrs = append(addrs, a)
}
}

return addrs
}

// lookupIPAddr resolves the specified host IP addresses.
func (p *Proxy) lookupIPAddr(host string, qtype uint16, ch chan *lookupResult) {
req := (&dns.Msg{}).SetQuestion(host, qtype)
Expand Down Expand Up @@ -74,23 +61,30 @@ func (p *Proxy) LookupNetIP(
continue
}

addrs = append(addrs, result.ansAddrs()...)
addrs = appendAnswers(addrs, result.resp.Answer)
}

if len(addrs) == 0 && len(errs) != 0 {
return addrs, errors.Join(errs...)
}

return p.sortAddrs(addrs), nil
}

// sortAddrs returns addrs sorted according to this proxy configuration.
func (p *Proxy) sortAddrs(addrs []netip.Addr) (sorted []netip.Addr) {
if p.Config.PreferIPv6 {
slices.SortStableFunc(addrs, netutil.PreferIPv6)
} else {
slices.SortStableFunc(addrs, netutil.PreferIPv4)
}

return addrs, nil
}

// appendAnswers returns a slice of with addresses appended from the given ans.
func appendAnswers(addrs []netip.Addr, ans []dns.RR) (appended []netip.Addr) {
for _, ansRR := range ans {
a := proxyutil.IPFromRR(ansRR)
if a != (netip.Addr{}) {
addrs = append(addrs, a)
}
}

return addrs
}

0 comments on commit d674445

Please sign in to comment.