From b6c676ad600b461d96ac999a87fc805f10985177 Mon Sep 17 00:00:00 2001 From: Konstantin Seiler Date: Wed, 22 Jan 2020 21:55:45 +1100 Subject: [PATCH] Prevent librespot from panicking if server connection is lost. --- core/src/session.rs | 9 +++++++-- src/main.rs | 3 ++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/session.rs b/core/src/session.rs index e15c6b8..7695eb5 100644 --- a/core/src/session.rs +++ b/core/src/session.rs @@ -283,13 +283,18 @@ where loop { let (cmd, data) = match self.0.poll() { - Ok(Async::Ready(t)) => t, + Ok(Async::Ready(Some(t))) => t, + Ok(Async::Ready(None)) => { + warn!("Connection to server closed."); + session.shutdown(); + return Ok(Async::Ready(())); + }, Ok(Async::NotReady) => return Ok(Async::NotReady), Err(e) => { session.shutdown(); return Err(From::from(e)); } - }.expect("connection closed"); + }; session.dispatch(cmd, data); } diff --git a/src/main.rs b/src/main.rs index e193257..fcced12 100644 --- a/src/main.rs +++ b/src/main.rs @@ -500,7 +500,8 @@ impl Future for Main { if self.shutdown { return Ok(Async::Ready(())); } else { - panic!("Spirc shut down unexpectedly"); + warn!("Spirc shut down unexpectedly"); + self.spirc_task = None; } } }