summaryrefslogtreecommitdiffhomepage
path: root/talpid-core
diff options
context:
space:
mode:
Diffstat (limited to 'talpid-core')
-rw-r--r--talpid-core/src/tunnel_state_machine/connected_state.rs5
-rw-r--r--talpid-core/src/tunnel_state_machine/connecting_state.rs19
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(&parameters)?;
@@ -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,