diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-11-02 13:23:03 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-03-14 12:08:40 +0100 |
| commit | 23392fd8e1ef92689b84458e89000771509e7004 (patch) | |
| tree | 1e32b0fa736412d63346e58deca5c2c44cdcdda9 | |
| parent | 610d09960a68e33abad8206e3db34aa14d197269 (diff) | |
| download | mullvadvpn-23392fd8e1ef92689b84458e89000771509e7004.tar.xz mullvadvpn-23392fd8e1ef92689b84458e89000771509e7004.zip | |
Parse specific device errors in management interface
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs index e6f84660c1..2712d19306 100644 --- a/mullvad-daemon/src/management_interface.rs +++ b/mullvad-daemon/src/management_interface.rs @@ -1,4 +1,4 @@ -use crate::{account_history, settings, DaemonCommand, DaemonCommandSender, EventListener}; +use crate::{account_history, device, settings, DaemonCommand, DaemonCommandSender, EventListener}; use futures::{ channel::{mpsc, oneshot}, StreamExt, @@ -888,6 +888,11 @@ fn map_daemon_error(error: crate::Error) -> Status { match error { DaemonError::RestError(error) => map_rest_error(error), DaemonError::SettingsError(error) => map_settings_error(error), + DaemonError::LoginError(error) => map_device_error(error), + DaemonError::LogoutError(error) => map_device_error(error), + DaemonError::KeyRotationError(error) => map_device_error(error), + DaemonError::ListDevicesError(error) => map_device_error(error), + DaemonError::RemoveDeviceError(error) => map_device_error(error), #[cfg(windows)] DaemonError::SplitTunnelError(error) => map_split_tunnel_error(error), DaemonError::AccountHistory(error) => map_account_history_error(error), @@ -960,6 +965,19 @@ fn map_settings_error(error: settings::Error) -> Status { } } +/// Converts an instance of [`mullvad_daemon::device::Error`] into a tonic status. +fn map_device_error(error: device::Error) -> Status { + match error { + device::Error::MaxDevicesReached => Status::new(Code::ResourceExhausted, error.to_string()), + device::Error::InvalidAccount => Status::new(Code::Unauthenticated, error.to_string()), + device::Error::InvalidDevice | device::Error::NoDevice => { + Status::new(Code::NotFound, error.to_string()) + } + device::Error::OtherRestError(error) => map_rest_error(error), + _ => Status::new(Code::Unknown, error.to_string()), + } +} + /// Converts an instance of [`mullvad_daemon::account_history::Error`] into a tonic status. fn map_account_history_error(error: account_history::Error) -> Status { match error { |
