Add guard in airplay remove client
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 14 Dec 2025 19:22:32 +0000 (20:22 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 14 Dec 2025 19:22:32 +0000 (20:22 +0100)
music_assistant/providers/airplay/stream_session.py

index 856b243fbb4f6c1d596abca5cd01d54d76cb0d76..aa455ee5711bd32401ba679862a976d8d0346b03 100644 (file)
@@ -134,12 +134,12 @@ class AirPlayStreamSession:
 
     async def remove_client(self, airplay_player: AirPlayPlayer) -> None:
         """Remove a sync client from the session."""
-        if airplay_player not in self.sync_clients:
-            return
-        assert airplay_player.stream
-        assert airplay_player.stream.session == self
         async with self._lock:
+            if airplay_player not in self.sync_clients:
+                return
             self.sync_clients.remove(airplay_player)
+        if not airplay_player.stream or airplay_player.stream.session != self:
+            return
         await airplay_player.stream.stop()
         if ffmpeg := self._player_ffmpeg.pop(airplay_player.player_id, None):
             await ffmpeg.close()