summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-03-31 11:59:26 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-03-31 15:45:48 +0200
commit7333c583f5e7094bd8ff218c0115ca8f808cb36d (patch)
treece88cd605a6755c03b8d363502b558a09f3c93c2
parent31a88ca249cc2d02da4fe327f5b296610c67c764 (diff)
downloadmullvadvpn-7333c583f5e7094bd8ff218c0115ca8f808cb36d.tar.xz
mullvadvpn-7333c583f5e7094bd8ff218c0115ca8f808cb36d.zip
Use only async file I/O in version_check
-rw-r--r--mullvad-daemon/src/lib.rs2
-rw-r--r--mullvad-daemon/src/version_check.rs18
2 files changed, 12 insertions, 8 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index 1dbec22163..8c35b82443 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -561,7 +561,7 @@ where
let _ = settings.set_show_beta_releases(true).await;
}
- let app_version_info = version_check::load_cache(&cache_dir);
+ let app_version_info = version_check::load_cache(&cache_dir).await;
let (version_updater, version_updater_handle) = version_check::VersionUpdater::new(
rpc_handle.clone(),
cache_dir.clone(),
diff --git a/mullvad-daemon/src/version_check.rs b/mullvad-daemon/src/version_check.rs
index 6432fb9737..4d7be8ad38 100644
--- a/mullvad-daemon/src/version_check.rs
+++ b/mullvad-daemon/src/version_check.rs
@@ -7,7 +7,6 @@ use mullvad_rpc::{rest::MullvadRestHandle, AppVersionProxy};
use mullvad_types::version::{AppVersionInfo, ParsedAppVersion};
use serde::{Deserialize, Serialize};
use std::{
- fs,
future::Future,
io,
path::{Path, PathBuf},
@@ -15,7 +14,7 @@ use std::{
};
use talpid_core::mpsc::Sender;
use talpid_types::ErrorExt;
-use tokio::fs::File;
+use tokio::fs::{self, File};
const VERSION_INFO_FILENAME: &str = "version-info.json";
@@ -73,6 +72,9 @@ pub enum Error {
#[error(display = "Failure in serialization of the version info")]
Serialize(#[error(source)] serde_json::Error),
+ #[error(display = "Failure in deserialization of the version info")]
+ Deserialize(#[error(source)] serde_json::Error),
+
#[error(display = "Failed to check the latest app version")]
Download(#[error(source)] mullvad_rpc::rest::Error),
@@ -356,12 +358,14 @@ impl VersionUpdater {
}
}
-fn try_load_cache(cache_dir: &Path) -> Result<AppVersionInfo, Error> {
+async fn try_load_cache(cache_dir: &Path) -> Result<AppVersionInfo, Error> {
let path = cache_dir.join(VERSION_INFO_FILENAME);
log::debug!("Loading version check cache from {}", path.display());
- let file = fs::File::open(&path).map_err(Error::ReadVersionCache)?;
+ let content = fs::read_to_string(&path)
+ .map_err(Error::ReadVersionCache)
+ .await?;
let version_info: CachedAppVersionInfo =
- serde_json::from_reader(io::BufReader::new(file)).map_err(Error::Serialize)?;
+ serde_json::from_str(&content).map_err(Error::Deserialize)?;
if version_info.cached_from_version == PRODUCT_VERSION {
Ok(version_info.version_info)
@@ -370,8 +374,8 @@ fn try_load_cache(cache_dir: &Path) -> Result<AppVersionInfo, Error> {
}
}
-pub fn load_cache(cache_dir: &Path) -> Option<AppVersionInfo> {
- match try_load_cache(cache_dir) {
+pub async fn load_cache(cache_dir: &Path) -> Option<AppVersionInfo> {
+ match try_load_cache(cache_dir).await {
Ok(app_version_info) => Some(app_version_info),
Err(error) => {
log::warn!(