diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-18 12:28:23 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-18 12:28:23 -0300 |
| commit | 8efbb702aecbd6e2ff3f15203aa022075b00b5be (patch) | |
| tree | 471b17708a567138f6f77fbdf0f3ef95c8ff2c21 | |
| parent | e94d52346036b9343e02ee4ec8e4de9d04a5432e (diff) | |
| parent | 7e5f45a7ee1be3842a754aa173205c2fd45ba291 (diff) | |
| download | mullvadvpn-8efbb702aecbd6e2ff3f15203aa022075b00b5be.tar.xz mullvadvpn-8efbb702aecbd6e2ff3f15203aa022075b00b5be.zip | |
Merge branch 'stop-ping-monitor-on-error'
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/wireguard/mod.rs | 19 |
2 files changed, 12 insertions, 8 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 6520ee1cc1..5d02cd2409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ Line wrap the file at 100 chars. Th - Make GUI WireGuard key verification resilient to failure. - Fix issue where daemon would try and connect with UDP when the tunnel protocol is set to OpenVPN and the bridge mode is set to "On". +- Don't start ping monitor loop if first ping fails when checking WireGuard connection. #### macOS - Unregister the app properly from the OS when running the bundled `uninstall.sh` script. diff --git a/talpid-core/src/tunnel/wireguard/mod.rs b/talpid-core/src/tunnel/wireguard/mod.rs index 71ef1a83b3..1eecfe8f85 100644 --- a/talpid-core/src/tunnel/wireguard/mod.rs +++ b/talpid-core/src/tunnel/wireguard/mod.rs @@ -4,7 +4,7 @@ use self::config::Config; use super::{tun_provider::TunProvider, TunnelEvent, TunnelMetadata}; use crate::routing; use std::{collections::HashMap, io, path::Path, sync::mpsc}; -use talpid_types::BoxedError; +use talpid_types::{BoxedError, ErrorExt}; pub mod config; mod ping_monitor; @@ -115,16 +115,19 @@ impl WireguardMonitor { match ping_monitor::ping(gateway, PING_TIMEOUT, &iface_name, true) { Ok(()) => { (on_event)(TunnelEvent::Up(metadata)); + + if let Err(e) = ping_monitor::monitor_ping(gateway, PING_TIMEOUT, &iface_name) { + log::trace!("Ping monitor failed - {}", e); + } } - Err(e) => { - log::error!("First ping to gateway failed - {}", e); - let _ = close_sender.send(CloseMsg::PingErr); + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg("First ping to gateway failed") + ); } - }; - - if let Err(e) = ping_monitor::monitor_ping(gateway, PING_TIMEOUT, &iface_name) { - log::trace!("Ping monitor failed - {}", e); } + let _ = close_sender.send(CloseMsg::PingErr); }); |
