fix a potential race in server.Close()

This commit is contained in:
Lucas Clemente
2016-06-03 12:13:07 +02:00
parent 240946dfde
commit c0b73c4beb

View File

@@ -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 {