diff --git a/internal/servers/hls/http_server.go b/internal/servers/hls/http_server.go index bf2885c7..ebd451d3 100644 --- a/internal/servers/hls/http_server.go +++ b/internal/servers/hls/http_server.go @@ -199,6 +199,7 @@ func (s *httpServer) onRequest(ctx *gin.Context) { mux, err := s.parent.getMuxer(serverGetMuxerReq{ path: dir, remoteAddr: httpp.RemoteAddr(ctx), + query: ctx.Request.URL.RawQuery, sourceOnDemand: pathConf.SourceOnDemand, }) if err != nil { diff --git a/internal/servers/hls/muxer.go b/internal/servers/hls/muxer.go index ac103641..c06c7fc2 100644 --- a/internal/servers/hls/muxer.go +++ b/internal/servers/hls/muxer.go @@ -59,6 +59,7 @@ type muxer struct { pathName string pathManager serverPathManager parent *Server + query string ctx context.Context ctxCancel func() @@ -124,6 +125,7 @@ func (m *muxer) runInner() error { AccessRequest: defs.PathAccessRequest{ Name: m.pathName, SkipAuth: true, + Query: m.query, }, }) if err != nil { diff --git a/internal/servers/hls/server.go b/internal/servers/hls/server.go index 3b5f80a0..8431ca0c 100644 --- a/internal/servers/hls/server.go +++ b/internal/servers/hls/server.go @@ -25,6 +25,7 @@ type serverGetMuxerRes struct { type serverGetMuxerReq struct { path string remoteAddr string + query string sourceOnDemand bool res chan serverGetMuxerRes } @@ -152,7 +153,7 @@ outer: case pa := <-s.chPathReady: if s.AlwaysRemux && !pa.SafeConf().SourceOnDemand { if _, ok := s.muxers[pa.Name()]; !ok { - s.createMuxer(pa.Name(), "") + s.createMuxer(pa.Name(), "", "") } } @@ -171,7 +172,7 @@ outer: case s.AlwaysRemux && !req.sourceOnDemand: req.res <- serverGetMuxerRes{err: fmt.Errorf("muxer is waiting to be created")} default: - req.res <- serverGetMuxerRes{muxer: s.createMuxer(req.path, req.remoteAddr)} + req.res <- serverGetMuxerRes{muxer: s.createMuxer(req.path, req.remoteAddr, req.query)} } case c := <-s.chCloseMuxer: @@ -215,7 +216,7 @@ outer: s.httpServer.close() } -func (s *Server) createMuxer(pathName string, remoteAddr string) *muxer { +func (s *Server) createMuxer(pathName string, remoteAddr string, query string) *muxer { r := &muxer{ parentCtx: s.ctx, remoteAddr: remoteAddr, @@ -230,6 +231,7 @@ func (s *Server) createMuxer(pathName string, remoteAddr string) *muxer { pathName: pathName, pathManager: s.PathManager, parent: s, + query: query, } r.initialize() s.muxers[pathName] = r