From 8951be1ad238e24885ee7cc368eb4357ef0bece3 Mon Sep 17 00:00:00 2001 From: Reactor Scram Date: Tue, 19 Dec 2023 18:51:27 -0600 Subject: [PATCH] fix(windows): disconnect tunnel on sign-out (#2932) --- .../src-tauri/src/client/gui.rs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/rust/windows-client/src-tauri/src/client/gui.rs b/rust/windows-client/src-tauri/src/client/gui.rs index 40d1bbb8a..db34fdf15 100755 --- a/rust/windows-client/src-tauri/src/client/gui.rs +++ b/rust/windows-client/src-tauri/src/client/gui.rs @@ -220,13 +220,14 @@ fn handle_system_tray_event(app: &tauri::AppHandle, event: TrayMenuEvent) -> Res } TrayMenuEvent::SignIn => app .try_state::() - .ok_or_else(|| anyhow!("getting ctlr_tx state"))? + .ok_or_else(|| anyhow!("couldn't get ctlr_tx state"))? .ctlr_tx .blocking_send(ControllerRequest::SignIn)?, - TrayMenuEvent::SignOut => { - keyring_entry()?.delete_password()?; - app.tray_handle().set_menu(signed_out_menu())?; - } + TrayMenuEvent::SignOut => app + .try_state::() + .ok_or_else(|| anyhow!("couldn't get ctlr_tx state"))? + .ctlr_tx + .blocking_send(ControllerRequest::SignOut)?, TrayMenuEvent::Quit => app.exit(0), } Ok(()) @@ -237,6 +238,7 @@ pub(crate) enum ControllerRequest { GetAdvancedSettings(oneshot::Sender), SchemeRequest(url::Url), SignIn, + SignOut, UpdateResources(Vec), } @@ -464,6 +466,14 @@ async fn run_controller( None, )?; } + Req::SignOut => { + keyring_entry()?.delete_password()?; + if let Some(mut session) = controller.connlib_session.take() { + // TODO: Needs testing + session.disconnect(None); + } + app.tray_handle().set_menu(signed_out_menu())?; + } Req::UpdateResources(resources) => { tracing::debug!("controller got UpdateResources"); let resources: Vec<_> = resources.into_iter().map(ResourceDisplay::from).collect();