aboutsummaryrefslogtreecommitdiff
path: root/tcpdialer.go
diff options
context:
space:
mode:
authorGravatar Nikolay Markov <enchantner@gmail.com> 2019-11-25 17:21:03 +0300
committerGravatar Erik Dubbelboer <erik@dubbelboer.com> 2019-11-25 15:21:03 +0100
commitbc5b479d851273e932c2c0755c4edd379163427c (patch)
treea96c58f8e65afdc88e85ac7cf7b6156b4ded0df4 /tcpdialer.go
parentDon't start a goroutine when not needed (diff)
downloadfasthttp-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.go10
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 {