From dad48ca83595ec6693a4a089c30371e132d099b1 Mon Sep 17 00:00:00 2001 From: Kyle Simpson Date: Tue, 17 Aug 2021 12:14:50 +0100 Subject: [PATCH] Driver: Fix incorrect leave behaviour in Drop handler Sending poison messages should suffice to kill the voice session: attempting to `.leave()`. Fixes #88. This was tested using `cargo make ready` and the modified `serenity/voice/` example. --- examples/serenity/voice/Cargo.toml | 2 +- examples/serenity/voice/src/main.rs | 7 ++++++- src/driver/mod.rs | 1 - 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/examples/serenity/voice/Cargo.toml b/examples/serenity/voice/Cargo.toml index d190a4b..f4c8b46 100644 --- a/examples/serenity/voice/Cargo.toml +++ b/examples/serenity/voice/Cargo.toml @@ -18,4 +18,4 @@ features = ["client", "standard_framework", "voice", "rustls_backend"] [dependencies.tokio] version = "1.0" -features = ["macros", "rt-multi-thread"] +features = ["macros", "rt-multi-thread", "signal"] diff --git a/examples/serenity/voice/src/main.rs b/examples/serenity/voice/src/main.rs index 9ce9345..e6f0ba7 100644 --- a/examples/serenity/voice/src/main.rs +++ b/examples/serenity/voice/src/main.rs @@ -63,7 +63,12 @@ async fn main() { .await .expect("Err creating client"); - let _ = client.start().await.map_err(|why| println!("Client ended: {:?}", why)); + tokio::spawn(async move { + let _ = client.start().await.map_err(|why| println!("Client ended: {:?}", why)); + }); + + tokio::signal::ctrl_c().await; + println!("Received Ctrl-C, shutting down."); } #[command] diff --git a/src/driver/mod.rs b/src/driver/mod.rs index cf1a021..3d78eab 100644 --- a/src/driver/mod.rs +++ b/src/driver/mod.rs @@ -308,7 +308,6 @@ impl Drop for Driver { /// Leaves the current connected voice channel, if connected to one, and /// forgets all configurations relevant to this Handler. fn drop(&mut self) { - self.leave(); let _ = self.sender.send(CoreMessage::Poison); } }