diff options
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, |
