From a2ff0d455f2b268b39c03e820c105eef9346d07c Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Wed, 18 Aug 2021 15:41:03 +0200 Subject: [PATCH] do not allow closed static sources to set a path as ready --- internal/core/path.go | 9 +++++++-- internal/core/rtmp_source.go | 1 + internal/core/rtsp_source.go | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/core/path.go b/internal/core/path.go index a4a62865..409751d8 100644 --- a/internal/core/path.go +++ b/internal/core/path.go @@ -92,6 +92,7 @@ type pathSourceStaticSetReadyRes struct { } type pathSourceStaticSetReadyReq struct { + Source sourceStatic Tracks gortsplib.Tracks Res chan pathSourceStaticSetReadyRes } @@ -348,8 +349,12 @@ outer: } case req := <-pa.sourceStaticSetReady: - pa.sourceSetReady(req.Tracks) - req.Res <- pathSourceStaticSetReadyRes{Stream: pa.stream} + if req.Source == pa.source { + pa.sourceSetReady(req.Tracks) + req.Res <- pathSourceStaticSetReadyRes{Stream: pa.stream} + } else { + req.Res <- pathSourceStaticSetReadyRes{Err: fmt.Errorf("terminated")} + } case req := <-pa.sourceStaticSetNotReady: if req.Source == pa.source { diff --git a/internal/core/rtmp_source.go b/internal/core/rtmp_source.go index 5421216f..2fad83df 100644 --- a/internal/core/rtmp_source.go +++ b/internal/core/rtmp_source.go @@ -159,6 +159,7 @@ func (s *rtmpSource) runInner() bool { s.log(logger.Info, "ready") res := s.parent.OnSourceStaticSetReady(pathSourceStaticSetReadyReq{ + Source: s, Tracks: tracks, }) if res.Err != nil { diff --git a/internal/core/rtsp_source.go b/internal/core/rtsp_source.go index 55196e41..753b001e 100644 --- a/internal/core/rtsp_source.go +++ b/internal/core/rtsp_source.go @@ -178,6 +178,7 @@ func (s *rtspSource) runInner() bool { s.log(logger.Info, "ready") res := s.parent.OnSourceStaticSetReady(pathSourceStaticSetReadyReq{ + Source: s, Tracks: conn.Tracks(), }) if res.Err != nil {