diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-03-23 12:56:45 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-03-25 16:34:04 +0100 |
| commit | c7702252ff95d4b4683c045236b745d22276e0e5 (patch) | |
| tree | 5c724849a88cd409bc99307ef3d00113a4b62f5a | |
| parent | 72dc4d1230c3b8f749cbd0f55ebbfdb27902d2c2 (diff) | |
| download | mullvadvpn-c7702252ff95d4b4683c045236b745d22276e0e5.tar.xz mullvadvpn-c7702252ff95d4b4683c045236b745d22276e0e5.zip | |
Initialize target state correctly
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 73f3daf170..640948e6d2 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -43,15 +43,13 @@ use mullvad_types::{ use settings::SettingsPersister; #[cfg(target_os = "android")] use std::os::unix::io::RawFd; -#[cfg(not(target_os = "android"))] -use std::path::Path; use std::{ fs::{self, File}, io, marker::PhantomData, mem, net::IpAddr, - path::PathBuf, + path::{Path, PathBuf}, sync::{mpsc as sync_mpsc, Arc, Weak}, time::Duration, }; @@ -602,9 +600,6 @@ where cached_target_state, target_cache.display() ); - let _ = fs::remove_file(target_cache).map_err(|e| { - error!("Cannot delete target tunnel state cache: {}", e); - }); } let tunnel_parameters_generator = MullvadTunnelParametersGenerator { @@ -623,6 +618,7 @@ where } else { TargetState::Unsecured }; + Self::cache_target_state(&cache_dir, initial_target_state); let initial_api_endpoint = Endpoint::from_socket_address( rpc_runtime.address_cache.peek_address(), @@ -2124,22 +2120,7 @@ where if new_state != self.target_state { self.target_state = new_state; - - // Cache the current target state - let cache_file = self.cache_dir.join(TARGET_START_STATE_FILE); - log::trace!("Saving tunnel target state to {}", cache_file.display()); - match File::create(&cache_file) { - Ok(handle) => { - if let Err(e) = - serde_json::to_writer(io::BufWriter::new(handle), &self.target_state) - { - log::error!("Failed to cache target state: {}", e); - } - } - Err(e) => { - log::error!("Failed to cache target state: {}", e); - } - } + Self::cache_target_state(&self.cache_dir, self.target_state); } match self.target_state { @@ -2152,6 +2133,21 @@ where } } + fn cache_target_state(cache_dir: &Path, target_state: TargetState) { + let cache_file = cache_dir.join(TARGET_START_STATE_FILE); + log::trace!("Saving tunnel target state to {}", cache_file.display()); + match File::create(&cache_file) { + Ok(handle) => { + if let Err(e) = serde_json::to_writer(io::BufWriter::new(handle), &target_state) { + log::error!("Failed to cache target state: {}", e); + } + } + Err(e) => { + log::error!("Failed to cache target state: {}", e); + } + } + } + fn connect_tunnel(&mut self) { self.send_tunnel_command(TunnelCommand::Connect); } |
