diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2018-10-03 17:35:26 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2018-10-03 17:40:13 +0200 |
| commit | d04849cb04faee0f6e2766ccb5cd576da89b22d5 (patch) | |
| tree | 852881d586eef007b1960a244b28b1415046327e /talpid-core | |
| parent | b8a8a3be6bcbe32eb58ada3815f900845b01ec86 (diff) | |
| download | mullvadvpn-d04849cb04faee0f6e2766ccb5cd576da89b22d5.tar.xz mullvadvpn-d04849cb04faee0f6e2766ccb5cd576da89b22d5.zip | |
Handle AllowLan in all states
Diffstat (limited to 'talpid-core')
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/disconnected_state.rs | 4 | ||||
| -rw-r--r-- | talpid-core/src/tunnel_state_machine/disconnecting_state.rs | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/talpid-core/src/tunnel_state_machine/disconnected_state.rs b/talpid-core/src/tunnel_state_machine/disconnected_state.rs index 7074e7c961..3d4518a050 100644 --- a/talpid-core/src/tunnel_state_machine/disconnected_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnected_state.rs @@ -42,6 +42,10 @@ impl TunnelState for DisconnectedState { use self::EventConsequence::*; match try_handle_event!(self, commands.poll()) { + Ok(TunnelCommand::AllowLan(allow_lan)) => { + shared_values.allow_lan = allow_lan; + SameState(self) + } Ok(TunnelCommand::Connect(parameters)) => { NewState(ConnectingState::enter(shared_values, parameters)) } diff --git a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs index 429c3ef07b..5028792c11 100644 --- a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs @@ -33,15 +33,23 @@ impl DisconnectingState { self.after_disconnect = match after_disconnect { AfterDisconnect::Nothing => match event { + Ok(TunnelCommand::AllowLan(allow_lan)) => { + shared_values.allow_lan = allow_lan; + Nothing + } Ok(TunnelCommand::Connect(parameters)) => Reconnect(parameters), Ok(TunnelCommand::Block(reason)) => Block(reason), _ => Nothing, }, AfterDisconnect::Block(reason) => match event { + Ok(TunnelCommand::AllowLan(allow_lan)) => { + shared_values.allow_lan = allow_lan; + Block(reason) + } Ok(TunnelCommand::Connect(parameters)) => Reconnect(parameters), Ok(TunnelCommand::Disconnect) => Nothing, Ok(TunnelCommand::Block(new_reason)) => Block(new_reason), - _ => Block(reason), + Err(_) => Block(reason), }, AfterDisconnect::Reconnect(tunnel_parameters) => match event { Ok(TunnelCommand::AllowLan(allow_lan)) => { |
