summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-11 14:10:18 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-11 15:01:20 +0000
commitc07555c7a827061f8ad91bd6f875d24bfb107761 (patch)
tree19ae2bae3e8dd4d783cf12866f6e7206aa56f7c3
parent370340faa12ff45326aa723a64ede3dc364f911d (diff)
downloadmullvadvpn-c07555c7a827061f8ad91bd6f875d24bfb107761.tar.xz
mullvadvpn-c07555c7a827061f8ad91bd6f875d24bfb107761.zip
Ensure the tunnel monitor closes if ping times out
-rw-r--r--talpid-core/src/tunnel/wireguard/mod.rs25
1 files changed, 17 insertions, 8 deletions
diff --git a/talpid-core/src/tunnel/wireguard/mod.rs b/talpid-core/src/tunnel/wireguard/mod.rs
index 13bff72d27..6308b1c514 100644
--- a/talpid-core/src/tunnel/wireguard/mod.rs
+++ b/talpid-core/src/tunnel/wireguard/mod.rs
@@ -11,6 +11,7 @@ use std::{
path::Path,
sync::{mpsc, Arc, Mutex},
};
+use talpid_types::ErrorExt;
pub mod config;
mod connectivity_check;
@@ -158,15 +159,23 @@ impl WireguardMonitor {
std::thread::spawn(move || {
match connectivity_monitor.establish_connectivity() {
- Ok(true) => (on_event)(TunnelEvent::Up(metadata)),
- Ok(false) => return,
- Err(err) => {
- log::error!("ConnectivityMonitor failed: {}", err);
- return;
+ Ok(true) => {
+ (on_event)(TunnelEvent::Up(metadata));
+
+ if let Err(error) = connectivity_monitor.run() {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg("Connectivity monitor failed")
+ );
+ }
+ }
+ Ok(false) => log::warn!("Timeout while checking tunnel connection"),
+ Err(error) => {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg("Failed to check tunnel connection")
+ );
}
- }
- if let Err(err) = connectivity_monitor.run() {
- log::error!("Connectivity monitor failed - {}", err);
}
let _ = close_sender.send(CloseMsg::PingErr);