x/crypto/ssh: Add timeout for dialing
Fixes golang/go#14941 Change-Id: I2b3a976d451d311519fab6cdabdc98a4a4752e31 Reviewed-on: https://go-review.googlesource.com/21136 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
c197bcf24c
commit
c7e3b0ebdd
+7
-1
@@ -9,6 +9,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client implements a traditional SSH client that supports shells,
|
// Client implements a traditional SSH client that supports shells,
|
||||||
@@ -169,7 +170,7 @@ func (c *Client) handleChannelOpens(in <-chan NewChannel) {
|
|||||||
// to incoming channels and requests, use net.Dial with NewClientConn
|
// to incoming channels and requests, use net.Dial with NewClientConn
|
||||||
// instead.
|
// instead.
|
||||||
func Dial(network, addr string, config *ClientConfig) (*Client, error) {
|
func Dial(network, addr string, config *ClientConfig) (*Client, error) {
|
||||||
conn, err := net.Dial(network, addr)
|
conn, err := net.DialTimeout(network, addr, config.Timeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -210,4 +211,9 @@ type ClientConfig struct {
|
|||||||
// string returned from PublicKey.Type method may be used, or
|
// string returned from PublicKey.Type method may be used, or
|
||||||
// any of the CertAlgoXxxx and KeyAlgoXxxx constants.
|
// any of the CertAlgoXxxx and KeyAlgoXxxx constants.
|
||||||
HostKeyAlgorithms []string
|
HostKeyAlgorithms []string
|
||||||
|
|
||||||
|
// Timeout is the maximum amount of time for the TCP connection to establish.
|
||||||
|
//
|
||||||
|
// A Timeout of zero means no timeout.
|
||||||
|
Timeout time.Duration
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user