clientconn: go idle if conn closed after preface received (#5714)

This commit is contained in:
Fu Wei 2022-10-19 00:01:08 +08:00 committed by GitHub
parent 778860e606
commit 79ccdd8f8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 1 deletions

View File

@ -1325,9 +1325,15 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne
return nil
case <-connClosed.Done():
// The transport has already closed. If we received the preface, too,
// this is not an error.
// this is not an error and go idle.
select {
case <-prefaceReceived.Done():
ac.mu.Lock()
defer ac.mu.Unlock()
if ac.state != connectivity.Shutdown {
ac.updateConnectivityState(connectivity.Idle, nil)
}
return nil
default:
return errors.New("connection closed before server preface received")