From 0be94ab3f591b9b6ba5b3c5702c0701e92b4bc28 Mon Sep 17 00:00:00 2001 From: iamqizhao Date: Mon, 22 Feb 2016 16:26:15 -0800 Subject: [PATCH] fix a race between transport creation and wait returning --- clientconn.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clientconn.go b/clientconn.go index 28e74da8..15d7af6c 100644 --- a/clientconn.go +++ b/clientconn.go @@ -539,8 +539,9 @@ func (cc *Conn) Wait(ctx context.Context) (transport.ClientTransport, error) { cc.mu.Unlock() return nil, ErrClientConnClosing case cc.state == Ready: + ct := cc.transport cc.mu.Unlock() - return cc.transport, nil + return ct, nil default: ready := cc.ready if ready == nil {