diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-09-06 17:37:05 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-09-13 15:57:39 +0200 |
| commit | fbb66be90ca20c45e3026d78c98ec10e4e767d28 (patch) | |
| tree | 6a4a49b9cfc52ae02216626c664c4abd3b374f67 | |
| parent | 4d141ed2d7a333444913614cf56a216f0bc1e498 (diff) | |
| download | mullvadvpn-fbb66be90ca20c45e3026d78c98ec10e4e767d28.tar.xz mullvadvpn-fbb66be90ca20c45e3026d78c98ec10e4e767d28.zip | |
Fix mapping of daemon voucher errors to gRPC errors
| -rw-r--r-- | mullvad-daemon/src/device/mod.rs | 4 | ||||
| -rw-r--r-- | mullvad-daemon/src/device/service.rs | 2 | ||||
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 23 |
3 files changed, 9 insertions, 20 deletions
diff --git a/mullvad-daemon/src/device/mod.rs b/mullvad-daemon/src/device/mod.rs index 3121c91e7b..7441579fc3 100644 --- a/mullvad-daemon/src/device/mod.rs +++ b/mullvad-daemon/src/device/mod.rs @@ -56,6 +56,10 @@ pub enum Error { InvalidDevice, #[error(display = "Invalid account")] InvalidAccount, + #[error(display = "Invalid voucher code")] + InvalidVoucher, + #[error(display = "The voucher has already been used")] + UsedVoucher, #[error(display = "Failed to read or write device cache")] DeviceIoError(#[error(source)] io::Error), #[error(display = "Failed parse device cache")] diff --git a/mullvad-daemon/src/device/service.rs b/mullvad-daemon/src/device/service.rs index 294e41bab5..1f574f272f 100644 --- a/mullvad-daemon/src/device/service.rs +++ b/mullvad-daemon/src/device/service.rs @@ -426,6 +426,8 @@ fn map_rest_error(error: rest::Error) -> Error { mullvad_api::DEVICE_NOT_FOUND => Error::InvalidDevice, mullvad_api::INVALID_ACCOUNT => Error::InvalidAccount, mullvad_api::MAX_DEVICES_REACHED => Error::MaxDevicesReached, + mullvad_api::INVALID_VOUCHER => Error::InvalidVoucher, + mullvad_api::VOUCHER_USED => Error::UsedVoucher, _ => Error::OtherRestError(error), }, error => Error::OtherRestError(error), diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs index a8c4484be8..bac3ed0f93 100644 --- a/mullvad-daemon/src/management_interface.rs +++ b/mullvad-daemon/src/management_interface.rs @@ -493,10 +493,7 @@ impl ManagementService for ManagementServiceImpl { }), }) }) - .map_err(|error| match error { - crate::Error::RestError(error) => map_rest_voucher_error(error), - error => map_daemon_error(error), - }) + .map_err(map_daemon_error) } // Device management @@ -982,22 +979,6 @@ fn map_split_tunnel_error(error: talpid_core::split_tunnel::Error) -> Status { } } -/// Converts a REST API voucher error into a tonic status. -fn map_rest_voucher_error(error: RestError) -> Status { - match error { - RestError::ApiError(StatusCode::BAD_REQUEST, message) => match &message.as_str() { - &mullvad_api::INVALID_VOUCHER => Status::new(Code::NotFound, INVALID_VOUCHER_MESSAGE), - - &mullvad_api::VOUCHER_USED => { - Status::new(Code::ResourceExhausted, USED_VOUCHER_MESSAGE) - } - - error => Status::unknown(format!("Voucher error: {}", error)), - }, - error => map_rest_error(&error), - } -} - /// Converts a REST API error into a tonic status. fn map_rest_error(error: &RestError) -> Status { match error { @@ -1035,6 +1016,8 @@ fn map_device_error(error: &device::Error) -> Status { device::Error::InvalidDevice | device::Error::NoDevice => { Status::new(Code::NotFound, error.to_string()) } + device::Error::InvalidVoucher => Status::new(Code::NotFound, INVALID_VOUCHER_MESSAGE), + device::Error::UsedVoucher => Status::new(Code::ResourceExhausted, USED_VOUCHER_MESSAGE), device::Error::DeviceIoError(ref _error) => { Status::new(Code::Unavailable, error.to_string()) } |
