summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-24 20:02:05 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-25 12:36:21 +0000
commitaffc6b9a4273c5226b5b31b3f96ab1ef54abded8 (patch)
tree64849b376ffc81185a0e373acb5dbee7dc3d8a1b
parentf4e5137301ec48f48885266937ee6435b0c50301 (diff)
downloadmullvadvpn-affc6b9a4273c5226b5b31b3f96ab1ef54abded8.tar.xz
mullvadvpn-affc6b9a4273c5226b5b31b3f96ab1ef54abded8.zip
Reconnect after changing allow LAN on Android
-rw-r--r--talpid-core/src/tunnel_state_machine/connected_state.rs11
-rw-r--r--talpid-core/src/tunnel_state_machine/connecting_state.rs11
2 files changed, 20 insertions, 2 deletions
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)),