Skip to content

Commit

Permalink
tcp: closeConnImmediately on write err
Browse files Browse the repository at this point in the history
  • Loading branch information
loongy committed Jan 24, 2020
1 parent 22382ab commit 759badd
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion tcp/conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,11 @@ func (pool *connPool) Send(to net.Addr, m protocol.Message) error {
go pool.closeConn(toStr)
}

return c.session.WriteMessage(c.conn, m)
if err := c.session.WriteMessage(c.conn, m); err != nil {
pool.logger.Errorf("error in session: %v, closing connection...", err)
pool.closeConnImmediately(toStr)
}
return nil
}

func (pool *connPool) connect(to net.Addr) (conn, error) {
Expand Down Expand Up @@ -145,3 +149,13 @@ func (pool *connPool) closeConn(to string) {
}
delete(pool.conns, to)
}

func (pool *connPool) closeConnImmediately(to string) {
pool.mu.Lock()
defer pool.mu.Unlock()

if err := pool.conns[to].conn.Close(); err != nil {
pool.logger.Errorf("error closing connection to %v: %v", to, err)
}
delete(pool.conns, to)
}

0 comments on commit 759badd

Please sign in to comment.