diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-03-31 11:59:26 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-03-31 15:45:48 +0200 |
| commit | 7333c583f5e7094bd8ff218c0115ca8f808cb36d (patch) | |
| tree | ce88cd605a6755c03b8d363502b558a09f3c93c2 | |
| parent | 31a88ca249cc2d02da4fe327f5b296610c67c764 (diff) | |
| download | mullvadvpn-7333c583f5e7094bd8ff218c0115ca8f808cb36d.tar.xz mullvadvpn-7333c583f5e7094bd8ff218c0115ca8f808cb36d.zip | |
Use only async file I/O in version_check
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 2 | ||||
| -rw-r--r-- | mullvad-daemon/src/version_check.rs | 18 |
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!( |
