mirror of https://github.com/grpc/grpc-go.git
Should be only one TransportAuthenticator
This commit is contained in:
parent
6404c49192
commit
f0feaea314
|
@ -172,7 +172,7 @@ func WithInsecure() DialOption {
|
||||||
// connection level security credentials (e.g., TLS/SSL).
|
// connection level security credentials (e.g., TLS/SSL).
|
||||||
func WithTransportCredentials(auth credentials.TransportAuthenticator) DialOption {
|
func WithTransportCredentials(auth credentials.TransportAuthenticator) DialOption {
|
||||||
return func(o *dialOptions) {
|
return func(o *dialOptions) {
|
||||||
o.copts.Authenticators = append(o.copts.Authenticators, auth)
|
o.copts.Authenticator = auth
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,11 +369,11 @@ func (cc *ClientConn) newAddrConn(addr Address, skipWait bool) error {
|
||||||
ac.events = trace.NewEventLog("grpc.ClientConn", ac.addr.Addr)
|
ac.events = trace.NewEventLog("grpc.ClientConn", ac.addr.Addr)
|
||||||
}
|
}
|
||||||
if !ac.dopts.insecure {
|
if !ac.dopts.insecure {
|
||||||
if len(ac.dopts.copts.Authenticators) == 0 {
|
if ac.dopts.copts.Authenticator == nil {
|
||||||
return errNoTransportSecurity
|
return errNoTransportSecurity
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(ac.dopts.copts.Authenticators) > 0 {
|
if ac.dopts.copts.Authenticator != nil {
|
||||||
return errCredentialsMisuse
|
return errCredentialsMisuse
|
||||||
}
|
}
|
||||||
for _, cd := range ac.dopts.copts.Credentials {
|
for _, cd := range ac.dopts.copts.Credentials {
|
||||||
|
|
|
@ -117,7 +117,7 @@ func newHTTP2Client(addr string, opts *ConnectOptions) (_ ClientTransport, err e
|
||||||
return nil, ConnectionErrorf("transport: %v", connErr)
|
return nil, ConnectionErrorf("transport: %v", connErr)
|
||||||
}
|
}
|
||||||
var authInfo credentials.AuthInfo
|
var authInfo credentials.AuthInfo
|
||||||
for _, auth := range opts.Authenticators {
|
if opts.Authenticator != nil {
|
||||||
scheme = "https"
|
scheme = "https"
|
||||||
// TODO(zhaoq): Now the first TransportAuthenticator is used if there are
|
// TODO(zhaoq): Now the first TransportAuthenticator is used if there are
|
||||||
// multiple ones provided. Revisit this if it is not appropriate. Probably
|
// multiple ones provided. Revisit this if it is not appropriate. Probably
|
||||||
|
@ -126,8 +126,7 @@ func newHTTP2Client(addr string, opts *ConnectOptions) (_ ClientTransport, err e
|
||||||
if timeout > 0 {
|
if timeout > 0 {
|
||||||
timeout -= time.Since(startT)
|
timeout -= time.Since(startT)
|
||||||
}
|
}
|
||||||
conn, authInfo, connErr = auth.ClientHandshake(addr, conn, timeout)
|
conn, authInfo, connErr = opts.Authenticator.ClientHandshake(addr, conn, timeout)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
if connErr != nil {
|
if connErr != nil {
|
||||||
return nil, ConnectionErrorf("transport: %v", connErr)
|
return nil, ConnectionErrorf("transport: %v", connErr)
|
||||||
|
|
|
@ -338,8 +338,8 @@ type ConnectOptions struct {
|
||||||
Dialer func(string, time.Duration) (net.Conn, error)
|
Dialer func(string, time.Duration) (net.Conn, error)
|
||||||
// Credentials stores the credentials required to issue RPCs.
|
// Credentials stores the credentials required to issue RPCs.
|
||||||
Credentials []credentials.Credentials
|
Credentials []credentials.Credentials
|
||||||
// Authenticators stores the Authenticators required to setup a client connection.
|
// Authenticator stores the Authenticator required to setup a client connection.
|
||||||
Authenticators []credentials.TransportAuthenticator
|
Authenticator credentials.TransportAuthenticator
|
||||||
// Timeout specifies the timeout for dialing a ClientTransport.
|
// Timeout specifies the timeout for dialing a ClientTransport.
|
||||||
Timeout time.Duration
|
Timeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue