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 {