summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli/src
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-02-14 14:17:38 +0000
committerEmīls Piņķis <emils@mullvad.net>2019-02-14 14:17:38 +0000
commit6c0c8dd999cdfaa5cc304dbaf5e2eb1fb6ef273b (patch)
tree0aaebbd249d0e178b52088f0b7b6ed908d6ec28d /mullvad-cli/src
parenta08660ec31bca11a19abefeaa9422dd424f8c5e6 (diff)
parent1c22fb20678170e009e59b80b96e0b63eab807d5 (diff)
downloadmullvadvpn-6c0c8dd999cdfaa5cc304dbaf5e2eb1fb6ef273b.tar.xz
mullvadvpn-6c0c8dd999cdfaa5cc304dbaf5e2eb1fb6ef273b.zip
Merge branch 'proper-state-subscriptions'
Diffstat (limited to 'mullvad-cli/src')
-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 {