Fix small race condition in snapcast teardown
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 9 Mar 2025 21:50:18 +0000 (22:50 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 9 Mar 2025 21:50:18 +0000 (22:50 +0100)
music_assistant/providers/snapcast/__init__.py

index 1f0118892ce32eb8c43614d234c82bd1c1cd7567..9e2860e9b0604c422962ee02f5c17829347d4c7d 100644 (file)
@@ -341,6 +341,10 @@ class SnapCastProvider(PlayerProvider):
         self._stop_called = True
         for snap_client_id in self._snapserver.clients:
             player_id = self._get_ma_id(snap_client_id)
+            if not (player := self.mass.players.get(player_id, raise_unavailable=False)):
+                continue
+            if player.state != PlayerState.PLAYING:
+                continue
             await self.cmd_stop(player_id)
         self._snapserver.stop()
         await self._stop_builtin_server()