From 6c7eed51cf112dddba3ab90adba036514e4b3694 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Tue, 16 Dec 2025 23:50:02 +0100 Subject: [PATCH] Fix race condition on shutdown in Sonos --- music_assistant/providers/sonos/player.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/music_assistant/providers/sonos/player.py b/music_assistant/providers/sonos/player.py index b0611266..1bb8345d 100644 --- a/music_assistant/providers/sonos/player.py +++ b/music_assistant/providers/sonos/player.py @@ -719,6 +719,8 @@ class SonosPlayer(Player): async def _connect(self, retry_on_fail: int = 0) -> None: """Connect to the Sonos player.""" + if self.mass.closing: + return if self._listen_task and not self._listen_task.done(): self.logger.debug("Already connected to Sonos player: %s", self.player_id) return @@ -744,7 +746,7 @@ class SonosPlayer(Player): self.logger.exception("Error in Sonos player listener: %s", err) finally: self.logger.info("Disconnected from player API") - if self.connected: + if self.connected and not self.mass.closing: # we didn't explicitly disconnect, try to reconnect # this should simply try to reconnect once and if that fails # we rely on mdns to pick it up again later @@ -758,6 +760,8 @@ class SonosPlayer(Player): def reconnect(self, delay: float = 1) -> None: """Reconnect the player.""" + if self.mass.closing: + return # use a task_id to prevent multiple reconnects task_id = f"sonos_reconnect_{self.player_id}" self.mass.call_later(delay, self._connect, delay, task_id=task_id) -- 2.34.1