Clean up any existing multi-client stream in squeezelite
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 15 Dec 2025 22:49:37 +0000 (23:49 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 15 Dec 2025 22:49:37 +0000 (23:49 +0100)
music_assistant/providers/squeezelite/player.py

index ac79533421e3a171855ccd6d6dc2b6e8a1c3ebdb..7da712e6cd4c4c240972d24ebfded96bdc9c3e08 100644 (file)
@@ -201,6 +201,10 @@ class SqueezelitePlayer(Player):
 
     async def stop(self) -> None:
         """Handle STOP command on the player."""
+        # Clean up any existing multi-client stream
+        if self.multi_client_stream is not None:
+            await self.multi_client_stream.stop()
+            self.multi_client_stream = None
         async with TaskManager(self.mass) as tg:
             for client in self._get_sync_clients():
                 tg.create_task(client.stop())
@@ -224,6 +228,11 @@ class SqueezelitePlayer(Player):
             msg = "A synced player cannot receive play commands directly"
             raise InvalidCommand(msg)
 
+        # Clean up any existing multi-client stream before starting a new one
+        if self.multi_client_stream is not None:
+            await self.multi_client_stream.stop()
+            self.multi_client_stream = None
+
         if not self.group_members:
             # Simple, single-player playback
             await self._handle_play_url_for_slimplayer(