diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-24 11:15:50 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-09-03 08:05:18 -0300 |
| commit | ecce1e7432483a2e6a564de3ecdcf6acd501f720 (patch) | |
| tree | 7a7017d2c86ca5af4347bb9858ebdd078f779720 | |
| parent | 329efd1f50a640c7cb20f042446a3eed5186057b (diff) | |
| download | mullvadvpn-ecce1e7432483a2e6a564de3ecdcf6acd501f720.tar.xz mullvadvpn-ecce1e7432483a2e6a564de3ecdcf6acd501f720.zip | |
Create `AfterDisconnect::Block` variant
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/disconnecting_state.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs index 0f65818257..6fbdacffe2 100644 --- a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs @@ -4,9 +4,12 @@ use error_chain::ChainedError; use futures::sync::{mpsc, oneshot}; use futures::{Async, Future, Stream}; +use talpid_types::tunnel::BlockReason; + use super::{ - ConnectingState, DisconnectedState, EventConsequence, ResultExt, SharedTunnelStateValues, - TunnelCommand, TunnelParameters, TunnelState, TunnelStateTransition, TunnelStateWrapper, + BlockedState, ConnectingState, DisconnectedState, EventConsequence, ResultExt, + SharedTunnelStateValues, TunnelCommand, TunnelParameters, TunnelState, TunnelStateTransition, + TunnelStateWrapper, }; use tunnel::CloseHandle; @@ -32,6 +35,11 @@ impl DisconnectingState { Ok(TunnelCommand::Connect(parameters)) => Reconnect(parameters), _ => Nothing, }, + AfterDisconnect::Block(reason) => match event { + Ok(TunnelCommand::Connect(parameters)) => Reconnect(parameters), + Ok(TunnelCommand::Disconnect) => Nothing, + _ => AfterDisconnect::Block(reason), + }, AfterDisconnect::Reconnect(mut tunnel_parameters) => match event { Ok(TunnelCommand::Connect(parameters)) => Reconnect(parameters), Ok(TunnelCommand::AllowLan(allow_lan)) => { @@ -63,6 +71,7 @@ impl DisconnectingState { ) -> (TunnelStateWrapper, TunnelStateTransition) { match self.after_disconnect { AfterDisconnect::Nothing => DisconnectedState::enter(shared_values, ()), + AfterDisconnect::Block(reason) => BlockedState::enter(shared_values, reason), AfterDisconnect::Reconnect(tunnel_parameters) => { ConnectingState::enter(shared_values, tunnel_parameters) } @@ -109,5 +118,6 @@ impl TunnelState for DisconnectingState { /// Which state should be transitioned to after disconnection is complete. pub enum AfterDisconnect { Nothing, + Block(BlockReason), Reconnect(TunnelParameters), } |
