diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-15 21:46:34 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-22 13:46:50 +0000 |
| commit | 84614a217a80a5c5fbf7b96d442eb29a85af79d2 (patch) | |
| tree | 85a52bb889b7f33447cdc93e2ecc831c1142aae3 | |
| parent | a9276d0a811bf3bf75fb51da5d42cbb575487079 (diff) | |
| download | mullvadvpn-84614a217a80a5c5fbf7b96d442eb29a85af79d2.tar.xz mullvadvpn-84614a217a80a5c5fbf7b96d442eb29a85af79d2.zip | |
Create `SettingsPersister::load` constructor
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 2 | ||||
| -rw-r--r-- | mullvad-daemon/src/settings.rs | 78 |
2 files changed, 40 insertions, 40 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 3fe8290b89..d16fab4e92 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -507,7 +507,7 @@ where ); tokio_remote.spawn(|_| version_check_future); - let mut settings = settings::load(); + let mut settings = SettingsPersister::load(); if version::is_beta_version() && settings.get_show_beta_releases().is_none() { let _ = settings.set_show_beta_releases(true); diff --git a/mullvad-daemon/src/settings.rs b/mullvad-daemon/src/settings.rs index 23f792e19b..c6fa901288 100644 --- a/mullvad-daemon/src/settings.rs +++ b/mullvad-daemon/src/settings.rs @@ -17,6 +17,45 @@ pub struct SettingsPersister { } impl SettingsPersister { + pub fn load() -> Self { + let settings = match Settings::load() { + Ok(mut settings) => { + // Force IPv6 to be enabled on Android + if cfg!(target_os = "android") { + let _ = settings.set_enable_ipv6(true); + } + settings + } + #[cfg(windows)] + Err(SettingsError::ReadError(ref _path, ref e)) if e.kind() == ErrorKind::NotFound => { + info!( + "No settings file found. Attempting migration from Windows Update backup location" + ); + if migrate_after_windows_update() { + match Settings::load() { + Ok(settings) => { + info!("Successfully loaded migrated settings"); + settings + } + Err(_) => { + warn!("Failed to load migrated settings, using defaults"); + Settings::default() + } + } + } else { + info!("Failed to migrate settings, using defaults"); + Settings::default() + } + } + Err(_) => { + info!("Failed to load settings, using defaults"); + Settings::default() + } + }; + + SettingsPersister { settings } + } + pub fn to_settings(&self) -> Settings { self.settings.clone() } @@ -36,45 +75,6 @@ impl DerefMut for SettingsPersister { } } -pub fn load() -> SettingsPersister { - let settings = match Settings::load() { - Ok(mut settings) => { - // Force IPv6 to be enabled on Android - if cfg!(target_os = "android") { - let _ = settings.set_enable_ipv6(true); - } - settings - } - #[cfg(windows)] - Err(SettingsError::ReadError(ref _path, ref e)) if e.kind() == ErrorKind::NotFound => { - info!( - "No settings file found. Attempting migration from Windows Update backup location" - ); - if migrate_after_windows_update() { - match Settings::load() { - Ok(settings) => { - info!("Successfully loaded migrated settings"); - settings - } - Err(_) => { - warn!("Failed to load migrated settings, using defaults"); - Settings::default() - } - } - } else { - info!("Failed to migrate settings, using defaults"); - Settings::default() - } - } - Err(_) => { - info!("Failed to load settings, using defaults"); - Settings::default() - } - }; - - SettingsPersister { settings } -} - #[cfg(windows)] fn migrate_after_windows_update() -> bool { match unsafe { |
