diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-17 13:12:18 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-23 15:00:04 -0300 |
| commit | f99b769015a5ae2aee60dbde3d40278779cf230d (patch) | |
| tree | c6527ac790dd3a9dc4dc0928ee92c8ffa8a69f3e | |
| parent | 0766ee8f26495bc936eec96b895db93f889ed581 (diff) | |
| download | mullvadvpn-f99b769015a5ae2aee60dbde3d40278779cf230d.tar.xz mullvadvpn-f99b769015a5ae2aee60dbde3d40278779cf230d.zip | |
Handle when the `TunnelStateMachine` finishes
| -rw-r--r-- | mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs | 3 | ||||
| -rw-r--r-- | mullvad-daemon/src/tunnel_state_machine/mod.rs | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs b/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs index e01789094b..20abcc7ec2 100644 --- a/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs +++ b/mullvad-daemon/src/tunnel_state_machine/disconnected_state.rs @@ -42,7 +42,8 @@ impl TunnelState for DisconnectedState { Ok(TunnelCommand::Connect(parameters)) => { NewState(ConnectingState::enter(shared_values, parameters)) } - _ => SameState(self), + Ok(_) => SameState(self), + Err(_) => Finished, } } } diff --git a/mullvad-daemon/src/tunnel_state_machine/mod.rs b/mullvad-daemon/src/tunnel_state_machine/mod.rs index 2d94bd066e..83bb22c011 100644 --- a/mullvad-daemon/src/tunnel_state_machine/mod.rs +++ b/mullvad-daemon/src/tunnel_state_machine/mod.rs @@ -216,6 +216,7 @@ impl From<EventConsequence<TunnelStateWrapper>> for TunnelStateMachineAction { } SameState(state) => Repeat(state), NoEvents(state) => Notify(Some(state), Ok(Async::NotReady)), + Finished => Notify(None, Ok(Async::Ready(None))), } } } @@ -233,6 +234,8 @@ enum EventConsequence<T: TunnelState> { SameState(T), /// No events were received, the event loop should block until one becomes available. NoEvents(T), + /// The state machine has finished its execution. + Finished, } impl<T> EventConsequence<T> @@ -356,6 +359,7 @@ impl TunnelState for TunnelStateWrapper { NewState(tunnel_state) => NewState(tunnel_state), SameState(state) => SameState(TunnelStateWrapper::$state(state)), NoEvents(state) => NoEvents(TunnelStateWrapper::$state(state)), + Finished => Finished, } } )* |
