From 1a1da5edda833f6b3c1dbe786e93a161b60309b3 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Sun, 2 Feb 2025 14:03:17 +0100 Subject: [PATCH] fix freeze when getting metrics and a RTSP connection is being created (#4179) (#4216) --- internal/servers/rtsp/conn.go | 4 ++-- internal/servers/rtsp/server.go | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/internal/servers/rtsp/conn.go b/internal/servers/rtsp/conn.go index ba853154387..c2857b1a5fb 100644 --- a/internal/servers/rtsp/conn.go +++ b/internal/servers/rtsp/conn.go @@ -25,7 +25,7 @@ const ( type connParent interface { logger.Writer - findSessionByRSession(rsession *gortsplib.ServerSession) *session + findSessionByRSessionUnsafe(rsession *gortsplib.ServerSession) *session } type conn struct { @@ -222,7 +222,7 @@ func (c *conn) apiItem() *defs.APIRTSPConn { BytesReceived: stats.BytesReceived, BytesSent: stats.BytesSent, Session: func() *uuid.UUID { - sx := c.parent.findSessionByRSession(c.rconn.Session()) + sx := c.parent.findSessionByRSessionUnsafe(c.rconn.Session()) if sx != nil { return &sx.uuid } diff --git a/internal/servers/rtsp/server.go b/internal/servers/rtsp/server.go index c3482ec3cd2..7cdafb21278 100644 --- a/internal/servers/rtsp/server.go +++ b/internal/servers/rtsp/server.go @@ -337,10 +337,7 @@ func (s *Server) findSessionByUUID(uuid uuid.UUID) (*gortsplib.ServerSession, *s return nil, nil } -func (s *Server) findSessionByRSession(rsession *gortsplib.ServerSession) *session { - s.mutex.RLock() - defer s.mutex.RUnlock() - +func (s *Server) findSessionByRSessionUnsafe(rsession *gortsplib.ServerSession) *session { return s.sessions[rsession] }