From 8fc5df76300a0710bac393c76f196c888fc5feab Mon Sep 17 00:00:00 2001 From: Marvin Schenkel Date: Tue, 9 Dec 2025 20:14:44 +0100 Subject: [PATCH] Fix race condition in Airplay stream cleanup (#2780) --- music_assistant/providers/airplay/protocols/airplay2.py | 3 ++- music_assistant/providers/airplay/protocols/raop.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/music_assistant/providers/airplay/protocols/airplay2.py b/music_assistant/providers/airplay/protocols/airplay2.py index 678ce2d8..e090ff46 100644 --- a/music_assistant/providers/airplay/protocols/airplay2.py +++ b/music_assistant/providers/airplay/protocols/airplay2.py @@ -159,4 +159,5 @@ class AirPlay2Stream(AirPlayProtocol): await asyncio.sleep(0) # Yield to event loop # ensure we're cleaned up afterwards (this also logs the returncode) - await self.stop() + if not self._stopped: + await self.stop() diff --git a/music_assistant/providers/airplay/protocols/raop.py b/music_assistant/providers/airplay/protocols/raop.py index 0d8bec5c..d3cd5581 100644 --- a/music_assistant/providers/airplay/protocols/raop.py +++ b/music_assistant/providers/airplay/protocols/raop.py @@ -198,4 +198,5 @@ class RaopStream(AirPlayProtocol): # ensure we're cleaned up afterwards (this also logs the returncode) logger.debug("CLIRaop stderr reader ended") - await self.stop() + if not self._stopped: + await self.stop() -- 2.34.1