diff options
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connected_state.rs | 11 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connecting_state.rs | 11 |
3 files changed, 21 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a80a06862f..ac4a3afd44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,6 +84,7 @@ Line wrap the file at 100 chars. Th - Fix crash that happened sometimes when closing the app or when requesting from the notification or the quick-settings tile for the app to connect or disconnect. - Fix app showing that it was blocking connections when it wasn't when VPN permission was denied. +- Fix internet not working for a minute or two after changing Allow LAN setting. #### Windows - Fix log output encoding for Windows modules. diff --git a/talpid-core/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs index 432ff1b4d7..a5a8861016 100644 --- a/talpid-core/src/tunnel_state_machine/connected_state.rs +++ b/talpid-core/src/tunnel_state_machine/connected_state.rs @@ -7,6 +7,7 @@ use crate::{ firewall::FirewallPolicy, tunnel::{CloseHandle, TunnelEvent, TunnelMetadata}, }; +use cfg_if::cfg_if; use futures::{channel::mpsc, stream::Fuse, StreamExt}; use std::net::IpAddr; use talpid_types::{ @@ -175,7 +176,15 @@ impl ConnectedState { self.disconnect(shared_values, AfterDisconnect::Block(error_cause)) } else { match self.set_firewall_policy(shared_values) { - Ok(()) => SameState(self.into()), + Ok(()) => { + cfg_if! { + if #[cfg(target_os = "android")] { + self.disconnect(shared_values, AfterDisconnect::Reconnect(0)) + } else { + SameState(self.into()) + } + } + } Err(error) => self.disconnect( shared_values, AfterDisconnect::Block(ErrorStateCause::SetFirewallPolicyError(error)), diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index bc59a1d812..614d82e233 100644 --- a/talpid-core/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -10,6 +10,7 @@ use crate::{ self, tun_provider::TunProvider, CloseHandle, TunnelEvent, TunnelMetadata, TunnelMonitor, }, }; +use cfg_if::cfg_if; use futures::{ channel::{mpsc, oneshot}, future::Fuse, @@ -229,7 +230,15 @@ impl ConnectingState { self.disconnect(shared_values, AfterDisconnect::Block(error_cause)) } else { match Self::set_firewall_policy(shared_values, &self.tunnel_parameters) { - Ok(()) => SameState(self.into()), + Ok(()) => { + cfg_if! { + if #[cfg(target_os = "android")] { + self.disconnect(shared_values, AfterDisconnect::Reconnect(0)) + } else { + SameState(self.into()) + } + } + } Err(error) => self.disconnect( shared_values, AfterDisconnect::Block(ErrorStateCause::SetFirewallPolicyError(error)), |
