diff options
author | Nikolay Markov <enchantner@gmail.com> | 2019-11-25 17:21:03 +0300 |
---|---|---|
committer | Erik Dubbelboer <erik@dubbelboer.com> | 2019-11-25 15:21:03 +0100 |
commit | bc5b479d851273e932c2c0755c4edd379163427c (patch) | |
tree | a96c58f8e65afdc88e85ac7cf7b6156b4ded0df4 /tcpdialer.go | |
parent | Don't start a goroutine when not needed (diff) | |
download | fasthttp-bc5b479d851273e932c2c0755c4edd379163427c.tar.gz fasthttp-bc5b479d851273e932c2c0755c4edd379163427c.tar.bz2 fasthttp-bc5b479d851273e932c2c0755c4edd379163427c.zip |
Custom LookupIPAddr function (#699)
* Custom LookupIPAddr function
* use interface instead of pointer
Diffstat (limited to 'tcpdialer.go')
-rw-r--r-- | tcpdialer.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/tcpdialer.go b/tcpdialer.go index 8d84983..7c90f10 100644 --- a/tcpdialer.go +++ b/tcpdialer.go @@ -120,6 +120,10 @@ var ( defaultDialer = &TCPDialer{Concurrency: 1000} ) +type Resolver interface { + LookupIPAddr(context.Context, string) (names []net.IPAddr, err error) +} + // TCPDialer contains options to control a group of Dial calls. type TCPDialer struct { // Concurrency controls the maximum number of concurrent Dails @@ -141,7 +145,7 @@ type TCPDialer struct { // }, // }, // } - Resolver *net.Resolver + Resolver Resolver tcpAddrsLock sync.Mutex tcpAddrsMap map[string]*tcpAddrEntry @@ -426,7 +430,7 @@ func (d *TCPDialer) getTCPAddrs(addr string, dualStack bool) ([]net.TCPAddr, uin return e.addrs, idx, nil } -func resolveTCPAddrs(addr string, dualStack bool, resolver *net.Resolver) ([]net.TCPAddr, error) { +func resolveTCPAddrs(addr string, dualStack bool, resolver Resolver) ([]net.TCPAddr, error) { host, portS, err := net.SplitHostPort(addr) if err != nil { return nil, err @@ -439,7 +443,7 @@ func resolveTCPAddrs(addr string, dualStack bool, resolver *net.Resolver) ([]net if resolver == nil { resolver = net.DefaultResolver } - + ctx := context.Background() ipaddrs, err := resolver.LookupIPAddr(ctx, host) if err != nil { |