summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli
diff options
context:
space:
mode:
Diffstat (limited to 'mullvad-cli')
-rw-r--r--mullvad-cli/src/cmds/status.rs10
-rw-r--r--mullvad-cli/src/main.rs3
2 files changed, 11 insertions, 2 deletions
diff --git a/mullvad-cli/src/cmds/status.rs b/mullvad-cli/src/cmds/status.rs
index 9c022a38d8..b1fb696b7f 100644
--- a/mullvad-cli/src/cmds/status.rs
+++ b/mullvad-cli/src/cmds/status.rs
@@ -1,4 +1,5 @@
-use crate::{new_rpc_client, Command, Result};
+use crate::{new_rpc_client, Command, Error, ErrorKind, Result, ResultExt};
+use futures::{Future, Stream};
use mullvad_ipc_client::DaemonRpcClient;
use mullvad_types::auth_failed::AuthFailed;
use talpid_types::tunnel::{BlockReason, TunnelStateTransition};
@@ -25,7 +26,12 @@ impl Command for Status {
print_state(&state);
print_location(&mut rpc)?;
if matches.subcommand_matches("listen").is_some() {
- for new_state in rpc.new_state_subscribe()? {
+ let subscription = rpc
+ .new_state_subscribe()
+ .wait()
+ .map_err(|_err| Error::from(ErrorKind::CantSubscribe))?;
+ for new_state in subscription.wait() {
+ let new_state = new_state.chain_err(|| "Subscription failed")?;
print_state(&new_state);
use self::TunnelStateTransition::*;
diff --git a/mullvad-cli/src/main.rs b/mullvad-cli/src/main.rs
index dc4ffe13db..733e3a136d 100644
--- a/mullvad-cli/src/main.rs
+++ b/mullvad-cli/src/main.rs
@@ -26,6 +26,9 @@ error_chain! {
description("Failed to connect to daemon")
display("Failed to connect to daemon: {}Is the daemon running?", err.display_chain())
}
+ CantSubscribe {
+ description("Can't subscribe to daemon states")
+ }
}
foreign_links {