summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-15 21:46:34 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-22 13:46:50 +0000
commit84614a217a80a5c5fbf7b96d442eb29a85af79d2 (patch)
tree85a52bb889b7f33447cdc93e2ecc831c1142aae3
parenta9276d0a811bf3bf75fb51da5d42cbb575487079 (diff)
downloadmullvadvpn-84614a217a80a5c5fbf7b96d442eb29a85af79d2.tar.xz
mullvadvpn-84614a217a80a5c5fbf7b96d442eb29a85af79d2.zip
Create `SettingsPersister::load` constructor
-rw-r--r--mullvad-daemon/src/lib.rs2
-rw-r--r--mullvad-daemon/src/settings.rs78
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 {