diff --git a/client/client.go b/client/client.go index 4dd5059..0894f0e 100644 --- a/client/client.go +++ b/client/client.go @@ -106,16 +106,21 @@ func (c *Client) Dial(ctx context.Context, prm PrmDial) error { client.WithContext(ctx), ) if err != nil { + var ctxErr error + // return context errors since they signal about dial problem if errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) { - return err + ctxErr = err + } else if st, ok := status.FromError(err); ok && st.Code() == codes.Canceled { + ctxErr = context.Canceled + } else if ok && st.Code() == codes.DeadlineExceeded { + ctxErr = context.DeadlineExceeded } - st, ok := status.FromError(err) - if ok && st.Code() == codes.Canceled { - return context.Canceled - } - if ok && st.Code() == codes.DeadlineExceeded { - return context.DeadlineExceeded + if ctxErr != nil { + if conn := c.c.Conn(); conn != nil { + _ = conn.Close() + } + return ctxErr } }