summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-25 10:29:07 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-25 10:29:07 -0300
commitd6efb533aa661c23bf586b158fa3847e960ec806 (patch)
tree5567a7279ad4130972992266b6b7d718e948da31
parentf4e5137301ec48f48885266937ee6435b0c50301 (diff)
parent33b538527e0093ff1236ee98c6abfdd39e019590 (diff)
downloadmullvadvpn-d6efb533aa661c23bf586b158fa3847e960ec806.tar.xz
mullvadvpn-d6efb533aa661c23bf586b158fa3847e960ec806.zip
Merge branch 'reconnect-after-changing-allow-lan'
-rw-r--r--CHANGELOG.md1
-rw-r--r--talpid-core/src/tunnel_state_machine/connected_state.rs11
-rw-r--r--talpid-core/src/tunnel_state_machine/connecting_state.rs11
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)),