summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-03-23 12:56:45 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-03-25 16:34:04 +0100
commitc7702252ff95d4b4683c045236b745d22276e0e5 (patch)
tree5c724849a88cd409bc99307ef3d00113a4b62f5a
parent72dc4d1230c3b8f749cbd0f55ebbfdb27902d2c2 (diff)
downloadmullvadvpn-c7702252ff95d4b4683c045236b745d22276e0e5.tar.xz
mullvadvpn-c7702252ff95d4b4683c045236b745d22276e0e5.zip
Initialize target state correctly
-rw-r--r--mullvad-daemon/src/lib.rs40
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);
}