From d7c170fec88a0f52513cf7ea2745d4794aab1c2e Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sun, 14 Jun 2020 19:57:33 +0200 Subject: [PATCH] terminate worker thread as soon as possible to avoid race conditions --- src/spotify.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/spotify.rs b/src/spotify.rs index 6ae3d54..830db2c 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -143,6 +143,12 @@ impl futures::Future for Worker { loop { let mut progress = false; + if self.session.is_invalid() { + self.player.stop(); + self.events.send(Event::Player(PlayerEvent::Stopped)); + return Poll::Ready(Result::Err(())); + } + if let Poll::Ready(Some(cmd)) = self.commands.as_mut().poll_next(cx) { progress = true; debug!("message received!"); @@ -216,11 +222,6 @@ impl futures::Future for Worker { _ => (), } - if self.session.is_invalid() { - self.events.send(Event::Player(PlayerEvent::Stopped)); - return Poll::Ready(Result::Err(())); - } - if !progress { return Poll::Pending; }