diff options
Diffstat (limited to 'talpid-core/src')
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/error_state.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/talpid-core/src/tunnel_state_machine/error_state.rs b/talpid-core/src/tunnel_state_machine/error_state.rs index ca280b9584..8ee25c764a 100644 --- a/talpid-core/src/tunnel_state_machine/error_state.rs +++ b/talpid-core/src/tunnel_state_machine/error_state.rs @@ -10,7 +10,7 @@ use crate::firewall::FirewallPolicy; use crate::resolver::LOCAL_DNS_RESOLVER; use futures::StreamExt; use talpid_types::{ - tunnel::{ErrorStateCause, FirewallPolicyError}, + tunnel::{ErrorStateCause, FirewallPolicyError, ParameterGenerationError}, ErrorExt, }; @@ -185,7 +185,10 @@ impl TunnelState for ErrorState { Some(TunnelCommand::Connectivity(connectivity)) => { shared_values.connectivity = connectivity; if !connectivity.is_offline() - && matches!(self.block_reason, ErrorStateCause::IsOffline) + // Reconnect if we're no longer offline + && (matches!(self.block_reason, ErrorStateCause::IsOffline) + // Try to reconnect if missing IP connectivity becomes available + || matches!(self.block_reason, ErrorStateCause::TunnelParameterError(ParameterGenerationError::IpVersionUnavailable { family }) if connectivity.has_family(family))) { #[cfg(target_os = "macos")] if !*LOCAL_DNS_RESOLVER { |
