diff --git a/internal/core/hls_manager.go b/internal/core/hls_manager.go index d354622a50e..7aa88a2071c 100644 --- a/internal/core/hls_manager.go +++ b/internal/core/hls_manager.go @@ -159,17 +159,17 @@ outer: for { select { case pa := <-m.chPathSourceReady: - if m.alwaysRemux { - m.createMuxer(pa.name, "") + if m.alwaysRemux && !pa.conf.SourceOnDemand { + if _, ok := m.muxers[pa.name]; !ok { + m.createMuxer(pa.name, "") + } } case pa := <-m.chPathSourceNotReady: - if m.alwaysRemux { - c, ok := m.muxers[pa.name] - if ok { - c.close() - delete(m.muxers, pa.name) - } + c, ok := m.muxers[pa.name] + if ok && c.remoteAddr == "" { // created with "always remux" + c.close() + delete(m.muxers, pa.name) } case req := <-m.chHandleRequest: @@ -178,9 +178,6 @@ outer: case ok: r.processRequest(&req) - case m.alwaysRemux: - req.res <- nil - default: r := m.createMuxer(req.path, req.ctx.ClientIP()) r.processRequest(&req) @@ -239,7 +236,6 @@ func (m *hlsManager) createMuxer(pathName string, remoteAddr string) *hlsMuxer { m.ctx, remoteAddr, m.externalAuthenticationURL, - m.alwaysRemux, m.variant, m.segmentCount, m.segmentDuration, diff --git a/internal/core/hls_muxer.go b/internal/core/hls_muxer.go index de423cf7c97..22d68da3e88 100644 --- a/internal/core/hls_muxer.go +++ b/internal/core/hls_muxer.go @@ -60,7 +60,6 @@ type hlsMuxerParent interface { type hlsMuxer struct { remoteAddr string externalAuthenticationURL string - alwaysRemux bool variant conf.HLSVariant segmentCount int segmentDuration conf.StringDuration @@ -91,7 +90,6 @@ func newHLSMuxer( parentCtx context.Context, remoteAddr string, externalAuthenticationURL string, - alwaysRemux bool, variant conf.HLSVariant, segmentCount int, segmentDuration conf.StringDuration, @@ -109,7 +107,6 @@ func newHLSMuxer( m := &hlsMuxer{ remoteAddr: remoteAddr, externalAuthenticationURL: externalAuthenticationURL, - alwaysRemux: alwaysRemux, variant: variant, segmentCount: segmentCount, segmentDuration: segmentDuration, @@ -210,7 +207,7 @@ func (m *hlsMuxer) run() { case err := <-innerErr: innerCtxCancel() - if m.alwaysRemux { + if m.remoteAddr == "" { // created with "always remux" m.Log(logger.Info, "ERR: %v", err) m.clearQueuedRequests() isReady = false