summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-07-31 21:54:52 +0100
committerEmīls Piņķis <emils@mullvad.net>2019-07-31 21:54:52 +0100
commitc72a8c119d95977d55326d965cc8fa4b91d14626 (patch)
treee1e0eb9df768d1a52cdf00b2705cb492af9c6955
parent029bcd20c2874b932fca80e287d637a0184856e3 (diff)
parenta91361fac8a4ed4f0512c21ea36f12f79e279c6d (diff)
downloadmullvadvpn-c72a8c119d95977d55326d965cc8fa4b91d14626.tar.xz
mullvadvpn-c72a8c119d95977d55326d965cc8fa4b91d14626.zip
Merge branch 'linux-improve-dns-static-file'
-rw-r--r--mullvad-types/src/settings/migrations/mod.rs3
-rw-r--r--talpid-core/src/dns/linux/static_resolv_conf.rs29
2 files changed, 20 insertions, 12 deletions
diff --git a/mullvad-types/src/settings/migrations/mod.rs b/mullvad-types/src/settings/migrations/mod.rs
index 521d462f81..ac17a05f24 100644
--- a/mullvad-types/src/settings/migrations/mod.rs
+++ b/mullvad-types/src/settings/migrations/mod.rs
@@ -133,7 +133,8 @@ mod test {
#[test]
fn test_deserialization_success() {
- let _version: SettingsVersion = serde_json::from_str("2").expect("Failed to deserialize valid version");
+ let _version: SettingsVersion =
+ serde_json::from_str("2").expect("Failed to deserialize valid version");
}
#[test]
diff --git a/talpid-core/src/dns/linux/static_resolv_conf.rs b/talpid-core/src/dns/linux/static_resolv_conf.rs
index 73c9aa4221..b783c439de 100644
--- a/talpid-core/src/dns/linux/static_resolv_conf.rs
+++ b/talpid-core/src/dns/linux/static_resolv_conf.rs
@@ -11,6 +11,7 @@ use std::{
use talpid_types::ErrorExt;
const RESOLV_CONF_BACKUP_PATH: &str = "/etc/resolv.conf.mullvadbackup";
+const RESOLV_CONF_DIR: &str = "/etc/";
pub type Result<T> = std::result::Result<T, Error>;
@@ -114,7 +115,7 @@ impl DnsWatcher {
let mut watcher = notify::raw_watcher(event_tx).map_err(Error::WatchResolvConf)?;
watcher
- .watch(RESOLV_CONF_PATH, RecursiveMode::NonRecursive)
+ .watch(&RESOLV_CONF_DIR, RecursiveMode::NonRecursive)
.map_err(Error::WatchResolvConf)?;
thread::spawn(move || Self::event_loop(event_rx, &state));
@@ -123,16 +124,22 @@ impl DnsWatcher {
}
fn event_loop(events: mpsc::Receiver<notify::RawEvent>, state: &Arc<Mutex<Option<State>>>) {
- for _ in events {
- let mut locked_state = state.lock();
-
- if let Err(error) = Self::update(locked_state.as_mut()) {
- log::error!(
- "{}",
- error.display_chain_with_msg(
- "Failed to update DNS state after DNS settings changed"
- )
- );
+ for event in events {
+ if event
+ .path
+ .as_ref()
+ .map(|p| p.as_path() == &RESOLV_CONF_PATH.as_ref())
+ .unwrap_or(false)
+ {
+ let mut locked_state = state.lock();
+ if let Err(error) = Self::update(locked_state.as_mut()) {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg(
+ "Failed to update DNS state after DNS settings changed"
+ )
+ );
+ }
}
}
}