summaryrefslogtreecommitdiffhomepage
path: root/talpid-core
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-01-24 07:12:13 -0200
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-01-24 12:01:16 -0200
commit6d12e585361af9b77e1aef470d0243efbe3d67a4 (patch)
tree8a20451e851da5cc4faaadfe122893ed920e9698 /talpid-core
parentd470abf17e22f8cd1cdcae96b1c5703e3c358358 (diff)
downloadmullvadvpn-6d12e585361af9b77e1aef470d0243efbe3d67a4.tar.xz
mullvadvpn-6d12e585361af9b77e1aef470d0243efbe3d67a4.zip
Prioritize `SetSecurityPolicyError` block reason
Diffstat (limited to 'talpid-core')
-rw-r--r--talpid-core/src/tunnel_state_machine/blocked_state.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/talpid-core/src/tunnel_state_machine/blocked_state.rs b/talpid-core/src/tunnel_state_machine/blocked_state.rs
index d392318c6a..abc782cd24 100644
--- a/talpid-core/src/tunnel_state_machine/blocked_state.rs
+++ b/talpid-core/src/tunnel_state_machine/blocked_state.rs
@@ -14,16 +14,21 @@ pub struct BlockedState {
}
impl BlockedState {
- fn set_security_policy(shared_values: &mut SharedTunnelStateValues) {
+ fn set_security_policy(shared_values: &mut SharedTunnelStateValues) -> Option<BlockReason> {
let policy = SecurityPolicy::Blocked {
allow_lan: shared_values.allow_lan,
};
- if let Err(error) = shared_values
+
+ match shared_values
.security
.apply_policy(policy)
.chain_err(|| "Failed to apply security policy for blocked state")
{
- log::error!("{}", error.display_chain());
+ Ok(()) => None,
+ Err(error) => {
+ log::error!("{}", error.display_chain());
+ Some(BlockReason::SetSecurityPolicyError)
+ }
}
}
}
@@ -35,7 +40,8 @@ impl TunnelState for BlockedState {
shared_values: &mut SharedTunnelStateValues,
block_reason: Self::Bootstrap,
) -> (TunnelStateWrapper, TunnelStateTransition) {
- Self::set_security_policy(shared_values);
+ let block_reason = Self::set_security_policy(shared_values).unwrap_or_else(|| block_reason);
+
(
TunnelStateWrapper::from(BlockedState {
block_reason: block_reason.clone(),