client: Close connection on non-nil error in Dial #282

Merged
fyrchik merged 1 commit from fyrchik/frostfs-sdk-go:fix-connection-close into master 2024-10-10 11:57:08 +00:00

View file

@ -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 ctxErr != nil {
if conn := c.c.Conn(); conn != nil {
_ = conn.Close()
}
if ok && st.Code() == codes.DeadlineExceeded {
return context.DeadlineExceeded
return ctxErr
}
}