diff --git a/ffplayout/src/api/routes.rs b/ffplayout/src/api/routes.rs index fbfc46d9..61340ad4 100644 --- a/ffplayout/src/api/routes.rs +++ b/ffplayout/src/api/routes.rs @@ -910,6 +910,7 @@ pub async fn process_control( user: web::ReqData, ) -> Result { let manager = controllers.lock().unwrap().get(*id).unwrap(); + manager.list_init.store(true, Ordering::SeqCst); match proc.into_inner().command { ProcessCtl::Status => { diff --git a/ffplayout/src/player/controller.rs b/ffplayout/src/player/controller.rs index 04a5e1bb..8c872c9f 100644 --- a/ffplayout/src/player/controller.rs +++ b/ffplayout/src/player/controller.rs @@ -118,6 +118,7 @@ impl ChannelManager { self.run_count.fetch_add(1, Ordering::SeqCst); self.is_alive.store(true, Ordering::SeqCst); self.is_terminated.store(false, Ordering::SeqCst); + self.list_init.store(true, Ordering::SeqCst); let pool_clone = self.db_pool.clone().unwrap(); let self_clone = self.clone(); @@ -143,6 +144,7 @@ impl ChannelManager { self.run_count.fetch_add(1, Ordering::SeqCst); self.is_alive.store(true, Ordering::SeqCst); self.is_terminated.store(false, Ordering::SeqCst); + self.list_init.store(true, Ordering::SeqCst); let pool_clone = self.db_pool.clone().unwrap(); let self_clone = self.clone(); diff --git a/ffplayout/src/utils/config.rs b/ffplayout/src/utils/config.rs index db6a4f96..0862dd51 100644 --- a/ffplayout/src/utils/config.rs +++ b/ffplayout/src/utils/config.rs @@ -681,7 +681,7 @@ impl PlayoutConfig { } for item in cmd.iter_mut() { - if item.ends_with(".ts") || item.ends_with(".m3u8") { + if item.ends_with(".ts") || (item.ends_with(".m3u8") && item != "master.m3u8") { if let Ok((hls_path, _, _)) = norm_abs_path(&global.hls_path, item) { item.clone_from(&hls_path.to_string_lossy().to_string()); };