diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-11 14:10:18 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-11 15:01:20 +0000 |
| commit | c07555c7a827061f8ad91bd6f875d24bfb107761 (patch) | |
| tree | 19ae2bae3e8dd4d783cf12866f6e7206aa56f7c3 | |
| parent | 370340faa12ff45326aa723a64ede3dc364f911d (diff) | |
| download | mullvadvpn-c07555c7a827061f8ad91bd6f875d24bfb107761.tar.xz mullvadvpn-c07555c7a827061f8ad91bd6f875d24bfb107761.zip | |
Ensure the tunnel monitor closes if ping times out
| -rw-r--r-- | talpid-core/src/tunnel/wireguard/mod.rs | 25 |
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); |
