From 1c536e034433a02f67e8a53e42e4990d03d779d6 Mon Sep 17 00:00:00 2001 From: David Hill Date: Wed, 14 Dec 2016 17:02:29 -0500 Subject: [PATCH] Add DialTimeout API --- socks/dial.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/socks/dial.go b/socks/dial.go index 6763584..69421e2 100644 --- a/socks/dial.go +++ b/socks/dial.go @@ -25,6 +25,7 @@ import ( "io" "net" "strconv" + "time" ) const ( @@ -80,6 +81,14 @@ type Proxy struct { } func (p *Proxy) Dial(network, addr string) (net.Conn, error) { + return p.dial(network, addr, 0) +} + +func (p *Proxy) DialTimeout(network, addr string, timeout time.Duration) (net.Conn, error) { + return p.dial(network, addr, timeout) +} + +func (p *Proxy) dial(network, addr string, timeout time.Duration) (net.Conn, error) { host, strPort, err := net.SplitHostPort(addr) if err != nil { return nil, err @@ -89,7 +98,7 @@ func (p *Proxy) Dial(network, addr string) (net.Conn, error) { return nil, err } - conn, err := net.Dial("tcp", p.Addr) + conn, err := net.DialTimeout("tcp", p.Addr, timeout) if err != nil { return nil, err }