summaryrefslogtreecommitdiffhomepage
path: root/mullvad-daemon/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2023-10-18 19:23:03 +0200
committerDavid Lönnhager <david.l@mullvad.net>2023-10-19 16:51:59 +0200
commit4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79 (patch)
treed6458f600d151347b99f52a0082157ee52b7e37f /mullvad-daemon/src
parent58b09e84af5a921af3b4db213d717bc2b0a03770 (diff)
downloadmullvadvpn-4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79.tar.xz
mullvadvpn-4e5d08ebbc2cb49304ff0c2f4c77ecc11be30c79.zip
Fold all access token requests into a single request
Diffstat (limited to 'mullvad-daemon/src')
-rw-r--r--mullvad-daemon/src/device/service.rs12
-rw-r--r--mullvad-daemon/src/geoip.rs3
-rw-r--r--mullvad-daemon/src/management_interface.rs2
3 files changed, 9 insertions, 8 deletions
diff --git a/mullvad-daemon/src/device/service.rs b/mullvad-daemon/src/device/service.rs
index fdda61297f..a56cf10b48 100644
--- a/mullvad-daemon/src/device/service.rs
+++ b/mullvad-daemon/src/device/service.rs
@@ -14,7 +14,7 @@ use talpid_types::net::wireguard::PrivateKey;
use super::{Error, PrivateAccountAndDevice, PrivateDevice};
use mullvad_api::{
availability::ApiAvailabilityHandle,
- rest::{self, Error as RestError, MullvadRestHandle},
+ rest::{self, MullvadRestHandle},
AccountsProxy, DevicesProxy,
};
use talpid_core::future_retry::{retry_future, ConstantInterval, ExponentialBackoff, Jittered};
@@ -402,7 +402,7 @@ pub fn spawn_account_service(
}
fn handle_expiry_result_inner(
- result: &Result<chrono::DateTime<chrono::Utc>, mullvad_api::rest::Error>,
+ result: &Result<chrono::DateTime<chrono::Utc>, rest::Error>,
api_availability: &ApiAvailabilityHandle,
) -> bool {
match result {
@@ -425,18 +425,18 @@ fn handle_expiry_result_inner(
}
}
-fn should_retry<T>(result: &Result<T, RestError>, api_handle: &ApiAvailabilityHandle) -> bool {
+fn should_retry<T>(result: &Result<T, rest::Error>, api_handle: &ApiAvailabilityHandle) -> bool {
match result {
Err(error) if error.is_network_error() => !api_handle.get_state().is_offline(),
_ => false,
}
}
-fn should_retry_backoff<T>(result: &Result<T, RestError>) -> bool {
+fn should_retry_backoff<T>(result: &Result<T, rest::Error>) -> bool {
match result {
Ok(_) => false,
Err(error) => {
- if let RestError::ApiError(status, code) = error {
+ if let rest::Error::ApiError(status, code) = error {
*status != rest::StatusCode::NOT_FOUND
&& code != mullvad_api::DEVICE_NOT_FOUND
&& code != mullvad_api::INVALID_ACCOUNT
@@ -451,7 +451,7 @@ fn should_retry_backoff<T>(result: &Result<T, RestError>) -> bool {
fn map_rest_error(error: rest::Error) -> Error {
match error {
- RestError::ApiError(_status, ref code) => match code.as_str() {
+ rest::Error::ApiError(_status, ref code) => match code.as_str() {
// TODO: Implement invalid payment
mullvad_api::DEVICE_NOT_FOUND => Error::InvalidDevice,
mullvad_api::INVALID_ACCOUNT => Error::InvalidAccount,
diff --git a/mullvad-daemon/src/geoip.rs b/mullvad-daemon/src/geoip.rs
index 527e06cf61..2619939215 100644
--- a/mullvad-daemon/src/geoip.rs
+++ b/mullvad-daemon/src/geoip.rs
@@ -89,10 +89,11 @@ async fn send_location_request_internal(
}
fn log_network_error(err: Error, version: &'static str) {
+ use std::sync::Arc;
let err_message = &format!("Unable to fetch {version} GeoIP location");
match err {
Error::HyperError(hyper_err) if hyper_err.is_connect() => {
- if let Some(cause) = hyper_err.into_cause() {
+ if let Some(cause) = Arc::into_inner(hyper_err).and_then(|x| x.into_cause()) {
if let Some(err) = cause.downcast_ref::<std::io::Error>() {
// Don't log ENETUNREACH errors, they are not informative.
if err.raw_os_error() == Some(libc::ENETUNREACH) {
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs
index 993f0f9ece..61e4b025ba 100644
--- a/mullvad-daemon/src/management_interface.rs
+++ b/mullvad-daemon/src/management_interface.rs
@@ -1088,7 +1088,7 @@ fn map_rest_error(error: &RestError) -> Status {
{
Status::new(Code::Unauthenticated, message)
}
- RestError::TimeoutError(_elapsed) => Status::deadline_exceeded("API request timed out"),
+ RestError::TimeoutError => Status::deadline_exceeded("API request timed out"),
RestError::HyperError(_) => Status::unavailable("Cannot reach the API"),
error => Status::unknown(format!("REST error: {error}")),
}