diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-30 15:11:17 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-09-03 08:05:18 -0300 |
| commit | c87cbbf49e0309a129d23dea4e2d57afcfe843ba (patch) | |
| tree | 8dac140230a1880e7586cc377676db5a007ed7a4 /talpid-core | |
| parent | ecce1e7432483a2e6a564de3ecdcf6acd501f720 (diff) | |
| download | mullvadvpn-c87cbbf49e0309a129d23dea4e2d57afcfe843ba.tar.xz mullvadvpn-c87cbbf49e0309a129d23dea4e2d57afcfe843ba.zip | |
Block if security policy can't be set
Diffstat (limited to 'talpid-core')
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connected_state.rs | 5 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/connecting_state.rs | 19 |
2 files changed, 14 insertions, 10 deletions
diff --git a/talpid-core/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs index ce8175d814..02a44c8be0 100644 --- a/talpid-core/src/tunnel_state_machine/connected_state.rs +++ b/talpid-core/src/tunnel_state_machine/connected_state.rs @@ -3,6 +3,7 @@ use futures::sync::{mpsc, oneshot}; use futures::{Async, Future, Stream}; use talpid_types::net::TunnelEndpoint; +use talpid_types::tunnel::BlockReason; use super::{ AfterDisconnect, ConnectingState, DisconnectingState, EventConsequence, Result, ResultExt, @@ -100,7 +101,7 @@ impl ConnectedState { ( self.close_handle, self.tunnel_close_event, - AfterDisconnect::Nothing, + AfterDisconnect::Block(BlockReason::SetSecurityPolicyError), ), )) } @@ -170,7 +171,7 @@ impl TunnelState for ConnectedState { ( connected_state.close_handle, connected_state.tunnel_close_event, - AfterDisconnect::Nothing, + AfterDisconnect::Block(BlockReason::SetSecurityPolicyError), ), ) } diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index 41031faa34..a87fa1384e 100644 --- a/talpid-core/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -41,12 +41,7 @@ pub struct ConnectingState { } impl ConnectingState { - fn new( - shared_values: &mut SharedTunnelStateValues, - parameters: TunnelParameters, - ) -> Result<Self> { - Self::set_security_policy(shared_values, parameters.endpoint, parameters.allow_lan)?; - + fn new(parameters: TunnelParameters) -> Result<Self> { let tunnel_endpoint = parameters.endpoint; let (tunnel_events, tunnel_close_event, close_handle) = Self::start_tunnel(¶meters)?; @@ -214,7 +209,7 @@ impl ConnectingState { ( self.close_handle, self.tunnel_close_event, - AfterDisconnect::Nothing, + AfterDisconnect::Block(BlockReason::SetSecurityPolicyError), ), )) } @@ -273,7 +268,15 @@ impl TunnelState for ConnectingState { shared_values: &mut SharedTunnelStateValues, parameters: Self::Bootstrap, ) -> (TunnelStateWrapper, TunnelStateTransition) { - match Self::new(shared_values, parameters) { + if let Err(error) = + Self::set_security_policy(shared_values, parameters.endpoint, parameters.allow_lan) + { + error!("{}", error.display_chain()); + + return BlockedState::enter(shared_values, BlockReason::StartTunnelError); + } + + match Self::new(parameters) { Ok(connecting_state) => ( TunnelStateWrapper::from(connecting_state), TunnelStateTransition::Connecting, |
