diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-25 10:29:07 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-25 10:29:07 -0300 |
| commit | d6efb533aa661c23bf586b158fa3847e960ec806 (patch) | |
| tree | 5567a7279ad4130972992266b6b7d718e948da31 | |
| parent | f4e5137301ec48f48885266937ee6435b0c50301 (diff) | |
| parent | 33b538527e0093ff1236ee98c6abfdd39e019590 (diff) | |
| download | mullvadvpn-d6efb533aa661c23bf586b158fa3847e960ec806.tar.xz mullvadvpn-d6efb533aa661c23bf586b158fa3847e960ec806.zip | |
Merge branch 'reconnect-after-changing-allow-lan'
| -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)), |
