DialWithNetConn is a special case of DialWithDialFunc
This commit is contained in:
parent
11536801d1
commit
560423fa8a
35
ftp.go
35
ftp.go
@ -70,7 +70,6 @@ type dialOptions struct {
|
|||||||
dialer net.Dialer
|
dialer net.Dialer
|
||||||
tlsConfig *tls.Config
|
tlsConfig *tls.Config
|
||||||
explicitTLS bool
|
explicitTLS bool
|
||||||
conn net.Conn
|
|
||||||
disableEPSV bool
|
disableEPSV bool
|
||||||
disableUTF8 bool
|
disableUTF8 bool
|
||||||
disableMLSD bool
|
disableMLSD bool
|
||||||
@ -108,14 +107,13 @@ func Dial(addr string, options ...DialOption) (*ServerConn, error) {
|
|||||||
do.location = time.UTC
|
do.location = time.UTC
|
||||||
}
|
}
|
||||||
|
|
||||||
tconn := do.conn
|
dialFunc := do.dialFunc
|
||||||
if tconn == nil {
|
|
||||||
var err error
|
|
||||||
|
|
||||||
if do.dialFunc != nil {
|
if dialFunc == nil {
|
||||||
tconn, err = do.dialFunc("tcp", addr)
|
if do.tlsConfig != nil && !do.explicitTLS {
|
||||||
} else if do.tlsConfig != nil && !do.explicitTLS {
|
dialFunc = func(network, address string) (net.Conn, error) {
|
||||||
tconn, err = tls.DialWithDialer(&do.dialer, "tcp", addr, do.tlsConfig)
|
return tls.DialWithDialer(&do.dialer, network, addr, do.tlsConfig)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx := do.context
|
ctx := do.context
|
||||||
|
|
||||||
@ -123,12 +121,15 @@ func Dial(addr string, options ...DialOption) (*ServerConn, error) {
|
|||||||
ctx = context.Background()
|
ctx = context.Background()
|
||||||
}
|
}
|
||||||
|
|
||||||
tconn, err = do.dialer.DialContext(ctx, "tcp", addr)
|
dialFunc = func(network, address string) (net.Conn, error) {
|
||||||
|
return do.dialer.DialContext(ctx, network, addr)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
tconn, err := dialFunc("tcp", addr)
|
||||||
return nil, err
|
if err != nil {
|
||||||
}
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the resolved IP address in case addr contains a domain name
|
// Use the resolved IP address in case addr contains a domain name
|
||||||
@ -143,7 +144,7 @@ func Dial(addr string, options ...DialOption) (*ServerConn, error) {
|
|||||||
host: remoteAddr.IP.String(),
|
host: remoteAddr.IP.String(),
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err := c.conn.ReadResponse(StatusReady)
|
_, _, err = c.conn.ReadResponse(StatusReady)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = c.Quit()
|
_ = c.Quit()
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -185,10 +186,12 @@ func DialWithDialer(dialer net.Dialer) DialOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DialWithNetConn returns a DialOption that configures the ServerConn with the underlying net.Conn
|
// DialWithNetConn returns a DialOption that configures the ServerConn with the underlying net.Conn
|
||||||
|
//
|
||||||
|
// Deprecated: Use [DialWithDialFunc] instead
|
||||||
func DialWithNetConn(conn net.Conn) DialOption {
|
func DialWithNetConn(conn net.Conn) DialOption {
|
||||||
return DialOption{func(do *dialOptions) {
|
return DialWithDialFunc(func(network, address string) (net.Conn, error) {
|
||||||
do.conn = conn
|
return conn, nil
|
||||||
}}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// DialWithDisabledEPSV returns a DialOption that configures the ServerConn with EPSV disabled
|
// DialWithDisabledEPSV returns a DialOption that configures the ServerConn with EPSV disabled
|
||||||
|
Loading…
Reference in New Issue
Block a user