Fix: prevent race condition in raop streaming when already stopped
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Wed, 26 Mar 2025 23:50:02 +0000 (00:50 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Wed, 26 Mar 2025 23:50:02 +0000 (00:50 +0100)
music_assistant/providers/airplay/raop.py

index 62cae6f42afe165bb690965c5fcab73db2d88b12..cf8d090226a7c6f1f522f243a8bcec2b909af250 100644 (file)
@@ -462,7 +462,7 @@ class RaopStream:
 
     async def _send_metadata(self, queue: PlayerQueue) -> None:
         """Send metadata to player (and connected sync childs)."""
-        if not queue or not queue.current_item:
+        if not queue or not queue.current_item or self._stopped:
             return
         duration = min(queue.current_item.duration or 0, 3600)
         title = queue.current_item.name
@@ -490,7 +490,7 @@ class RaopStream:
         await self.send_cli_command(cmd)
 
         # get image
-        if not queue.current_item.image:
+        if not queue.current_item.image or self._stopped:
             return
 
         # the image format needs to be 500x500 jpeg for maximum compatibility with players
@@ -501,7 +501,7 @@ class RaopStream:
 
     async def _send_progress(self, queue: PlayerQueue) -> None:
         """Send progress report to player (and connected sync childs)."""
-        if not queue or not queue.current_item:
+        if not queue or not queue.current_item or self._stopped:
             return
         progress = int(queue.corrected_elapsed_time)
         await self.send_cli_command(f"PROGRESS={progress}\n")