server: fix the issue if connections leak

When the connection closed, it should delete
the connection from server's connections map.

Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
This commit is contained in:
fupan.lfp 2020-04-20 17:51:46 +08:00
parent 0be804eadb
commit 9ece5ae787

View File

@ -209,6 +209,13 @@ func (s *Server) addConnection(c *serverConn) {
s.connections[c] = struct{}{} s.connections[c] = struct{}{}
} }
func (s *Server) delConnection(c *serverConn) {
s.mu.Lock()
defer s.mu.Unlock()
delete(s.connections, c)
}
func (s *Server) closeIdleConns() bool { func (s *Server) closeIdleConns() bool {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
@ -313,6 +320,7 @@ func (c *serverConn) run(sctx context.Context) {
defer c.conn.Close() defer c.conn.Close()
defer cancel() defer cancel()
defer close(done) defer close(done)
defer c.server.delConnection(c)
go func(recvErr chan error) { go func(recvErr chan error) {
defer close(recvErr) defer close(recvErr)