summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-11-02 13:23:03 +0100
committerDavid Lönnhager <david.l@mullvad.net>2022-03-14 12:08:40 +0100
commit23392fd8e1ef92689b84458e89000771509e7004 (patch)
tree1e32b0fa736412d63346e58deca5c2c44cdcdda9
parent610d09960a68e33abad8206e3db34aa14d197269 (diff)
downloadmullvadvpn-23392fd8e1ef92689b84458e89000771509e7004.tar.xz
mullvadvpn-23392fd8e1ef92689b84458e89000771509e7004.zip
Parse specific device errors in management interface
-rw-r--r--mullvad-daemon/src/management_interface.rs20
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 {