summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-cli/src/cmds/status.rs6
-rw-r--r--mullvad-daemon/src/lib.rs6
-rw-r--r--mullvad-jni/src/into_java.rs10
-rw-r--r--mullvad-types/src/states.rs28
4 files changed, 36 insertions, 14 deletions
diff --git a/mullvad-cli/src/cmds/status.rs b/mullvad-cli/src/cmds/status.rs
index b1a51e2719..9f0b447673 100644
--- a/mullvad-cli/src/cmds/status.rs
+++ b/mullvad-cli/src/cmds/status.rs
@@ -2,7 +2,7 @@ use crate::{new_rpc_client, Command, Error, Result};
use futures::{Future, Stream};
use mullvad_ipc_client::DaemonRpcClient;
use mullvad_types::{auth_failed::AuthFailed, states::TunnelState, DaemonEvent};
-use talpid_types::tunnel::{BlockReason, TunnelStateTransition};
+use talpid_types::tunnel::BlockReason;
pub struct Status;
@@ -41,7 +41,7 @@ impl Command for Status {
match event? {
DaemonEvent::StateTransition(new_state) => {
print_state(&new_state);
- use self::TunnelStateTransition::*;
+ use self::TunnelState::*;
match new_state {
Connected(_) | Disconnected => print_location(&mut rpc)?,
_ => {}
@@ -70,7 +70,7 @@ impl Command for Status {
}
fn print_state(state: &TunnelState) {
- use self::TunnelStateTransition::*;
+ use self::TunnelState::*;
print!("Tunnel status: ");
match state {
Blocked(reason) => print_blocked_reason(reason),
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index b2239cf7fd..eacb9a2197 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -152,7 +152,7 @@ impl DaemonExecutionState {
match self {
Running => {
match tunnel_state {
- TunnelStateTransition::Disconnected => mem::replace(self, Finished),
+ TunnelState::Disconnected => mem::replace(self, Finished),
_ => mem::replace(self, Exiting),
};
}
@@ -388,7 +388,7 @@ where
let mut daemon = Daemon {
tunnel_command_tx: Sink::wait(tunnel_command_tx),
- tunnel_state: TunnelStateTransition::Disconnected,
+ tunnel_state: TunnelState::Disconnected,
target_state: TargetState::Unsecured,
state: DaemonExecutionState::Running,
rx: internal_event_rx,
@@ -779,7 +779,7 @@ where
}
fn on_get_current_location(&self, tx: oneshot::Sender<Option<GeoIpLocation>>) {
- use self::TunnelStateTransition::*;
+ use self::TunnelState::*;
let get_location: Box<dyn Future<Item = Option<GeoIpLocation>, Error = ()> + Send> =
match self.tunnel_state {
Disconnected => Box::new(self.get_geo_location().map(Some)),
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index b08c555ee0..359c4466f6 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -466,11 +466,11 @@ impl<'env> IntoJava<'env> for TunnelState {
fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
let variant = match self {
- TunnelStateTransition::Disconnected => "Disconnected",
- TunnelStateTransition::Connecting(_) => "Connecting",
- TunnelStateTransition::Connected(_) => "Connected",
- TunnelStateTransition::Disconnecting(_) => "Disconnecting",
- TunnelStateTransition::Blocked(_) => "Blocked",
+ TunnelState::Disconnected => "Disconnected",
+ TunnelState::Connecting(_) => "Connecting",
+ TunnelState::Connected(_) => "Connected",
+ TunnelState::Disconnecting(_) => "Disconnecting",
+ TunnelState::Blocked(_) => "Blocked",
};
let class = get_class(&format!(
diff --git a/mullvad-types/src/states.rs b/mullvad-types/src/states.rs
index e7f7467660..77ef24fd7f 100644
--- a/mullvad-types/src/states.rs
+++ b/mullvad-types/src/states.rs
@@ -1,5 +1,8 @@
use serde::{Deserialize, Serialize};
-use talpid_types::tunnel::TunnelStateTransition;
+use talpid_types::{
+ net::TunnelEndpoint,
+ tunnel::{ActionAfterDisconnect, BlockReason},
+};
/// Represents the state the client strives towards.
/// When in `Secured`, the client should keep the computer from leaking and try to
@@ -11,5 +14,24 @@ pub enum TargetState {
Secured,
}
-/// Temporary alias used to migrate the usages.
-pub type TunnelState = TunnelStateTransition;
+/// Represents the state the client tunnel is in.
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "snake_case")]
+#[serde(tag = "state", content = "details")]
+pub enum TunnelState {
+ Disconnected,
+ Connecting(TunnelEndpoint),
+ Connected(TunnelEndpoint),
+ Disconnecting(ActionAfterDisconnect),
+ Blocked(BlockReason),
+}
+
+impl TunnelState {
+ /// Returns true if the tunnel state is the blocked state.
+ pub fn is_blocked(&self) -> bool {
+ match self {
+ TunnelState::Blocked(_) => true,
+ _ => false,
+ }
+ }
+}