Have SnowflakeConn.Close() return errors

Return an error if the connection was already closed. On the first
close, return an error if any of the calls inside Close() returned an
error in this order:
- smux.Stream.Close()
- pconn.Close()
- smux.Session.Close()
This commit is contained in:
Cecylia Bocovich 2024-10-24 11:24:55 -04:00
parent a019fdaec9
commit 0d8bd159ec
No known key found for this signature in database
GPG key ID: 009DE379FD9B7B90

View file

@ -243,14 +243,19 @@ type SnowflakeConn struct {
//
// The collection of snowflake proxies for this connection is stopped.
func (conn *SnowflakeConn) Close() error {
var err error
log.Printf("---- SnowflakeConn: closed stream %v ---", conn.ID())
conn.Stream.Close()
err = conn.Stream.Close()
log.Printf("---- SnowflakeConn: end collecting snowflakes ---")
conn.snowflakes.End()
conn.pconn.Close()
if inerr := conn.pconn.Close(); err == nil {
err = inerr
}
log.Printf("---- SnowflakeConn: discarding finished session ---")
conn.sess.Close()
return nil // TODO: return errors if any of the above do
if inerr := conn.sess.Close(); err == nil {
err = inerr
}
return err
}
// loop through all provided STUN servers until we exhaust the list or find