diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-09 14:53:06 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-10 15:39:57 +0000 |
| commit | 2f4540ab4cd00922726e87972570d5d927def56b (patch) | |
| tree | a1381b205df2899bde94f2b4892cb9045a751ae1 | |
| parent | 510163fb57f89818a666a5ea5b762860fa41fc3e (diff) | |
| download | mullvadvpn-2f4540ab4cd00922726e87972570d5d927def56b.tar.xz mullvadvpn-2f4540ab4cd00922726e87972570d5d927def56b.zip | |
Open dummy tunnel interface in blocking state
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/blocked_state.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/talpid-core/src/tunnel_state_machine/blocked_state.rs b/talpid-core/src/tunnel_state_machine/blocked_state.rs index 2387d4e922..bdf054ab2c 100644 --- a/talpid-core/src/tunnel_state_machine/blocked_state.rs +++ b/talpid-core/src/tunnel_state_machine/blocked_state.rs @@ -30,6 +30,22 @@ impl BlockedState { } } } + + #[cfg(target_os = "android")] + fn create_blocking_tun(shared_values: &mut SharedTunnelStateValues) -> Option<BlockReason> { + match shared_values.tun_provider.create_tun_if_closed() { + Ok(()) => None, + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg( + "Failed to open tunnel adapter to drop packets for blocked state" + ) + ); + Some(BlockReason::SetFirewallPolicyError) + } + } + } } impl TunnelState for BlockedState { @@ -40,6 +56,8 @@ impl TunnelState for BlockedState { block_reason: Self::Bootstrap, ) -> (TunnelStateWrapper, TunnelStateTransition) { let block_reason = Self::set_firewall_policy(shared_values).unwrap_or_else(|| block_reason); + #[cfg(target_os = "android")] + let block_reason = Self::create_blocking_tun(shared_values).unwrap_or_else(|| block_reason); ( TunnelStateWrapper::from(BlockedState { |
