2
0

Make Conn Close idempotent

* die (which is called by Close) now closes underlying connection
This commit is contained in:
Jack Christensen
2014-06-20 14:50:36 -05:00
parent 6c7f173b08
commit 7a8e80ac0d
+8
View File
@@ -232,7 +232,13 @@ func Connect(config ConnConfig) (c *Conn, err error) {
}
}
// Close closes a connection. It is safe to call Close on a already closed
// connection.
func (c *Conn) Close() (err error) {
if !c.IsAlive() {
return nil
}
err = c.txMsg('X', c.getBuf(), true)
c.die(errors.New("Closed"))
c.logger.Info("Closed connection")
@@ -1190,4 +1196,6 @@ func (c *Conn) getBuf() *bytes.Buffer {
func (c *Conn) die(err error) {
c.alive = false
c.causeOfDeath = err
c.writer.Flush()
c.conn.Close()
}