From c0b73c4beb0bab76be4ac2be768a1181d36d4905 Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Fri, 3 Jun 2016 12:13:07 +0200 Subject: [PATCH] fix a potential race in server.Close() --- server.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/server.go b/server.go index bc494984..7e4e26b3 100644 --- a/server.go +++ b/server.go @@ -109,15 +109,14 @@ func (s *Server) Close() error { s.sessionsMutex.Unlock() s.connMutex.Lock() - defer s.connMutex.Unlock() + conn := s.conn + s.conn = nil + s.connMutex.Unlock() - if s.conn == nil { + if conn == nil { return nil } - defer func() { - s.conn = nil - }() - return s.conn.Close() + return conn.Close() } func (s *Server) handlePacket(conn *net.UDPConn, remoteAddr *net.UDPAddr, packet []byte) error {