From 8effbda3a7cfc085941d09126c10fe1007654ea6 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Wed, 31 May 2017 15:01:11 -0700 Subject: [PATCH] clientv3: use Endpoints[0] to initialize grpc creds Dialing out without specifying TLS creds but giving https uses some default behavior that depends on passing an endpoint with https to Dial(), so it's not enough to completely rely on the balancer to supply endpoints. Fixes #8008 Also ctx-izes grpc.Dial --- clientv3/client.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/clientv3/client.go b/clientv3/client.go index 51aba8b00..c3014bb4a 100644 --- a/clientv3/client.go +++ b/clientv3/client.go @@ -322,7 +322,7 @@ func (c *Client) dial(endpoint string, dopts ...grpc.DialOption) (*grpc.ClientCo opts = append(opts, c.cfg.DialOptions...) - conn, err := grpc.Dial(host, opts...) + conn, err := grpc.DialContext(c.ctx, host, opts...) if err != nil { return nil, err } @@ -367,7 +367,9 @@ func newClient(cfg *Config) (*Client, error) { } client.balancer = newSimpleBalancer(cfg.Endpoints) - conn, err := client.dial("", grpc.WithBalancer(client.balancer)) + // use Endpoints[0] so that for https:// without any tls config given, then + // grpc will assume the ServerName is in the endpoint. + conn, err := client.dial(cfg.Endpoints[0], grpc.WithBalancer(client.balancer)) if err != nil { client.cancel() client.balancer.Close()