From 9ece5ae787377199802deacb7f174f4c9ee09f8c Mon Sep 17 00:00:00 2001 From: "fupan.lfp" Date: Mon, 20 Apr 2020 17:51:46 +0800 Subject: [PATCH] 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 --- server.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server.go b/server.go index 1d4f1df..e3b7a8b 100644 --- a/server.go +++ b/server.go @@ -209,6 +209,13 @@ func (s *Server) addConnection(c *serverConn) { 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 { s.mu.Lock() defer s.mu.Unlock() @@ -313,6 +320,7 @@ func (c *serverConn) run(sctx context.Context) { defer c.conn.Close() defer cancel() defer close(done) + defer c.server.delConnection(c) go func(recvErr chan error) { defer close(recvErr)