summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2017-07-03 09:56:50 +0200
committerLinus Färnstrand <linus@mullvad.net>2017-07-03 12:47:51 +0200
commit3a0bda70eae6240f08e1082a94b0e267a3032dde (patch)
tree118e8dbbbe5480430961f81ae272428b86d8aeb0
parentce5aea0e616ae50f7c0ea4b14d945a842b46a726 (diff)
downloadmullvadvpn-3a0bda70eae6240f08e1082a94b0e267a3032dde.tar.xz
mullvadvpn-3a0bda70eae6240f08e1082a94b0e267a3032dde.zip
Change account_token to an Option
-rw-r--r--mullvad_daemon/src/main.rs14
-rw-r--r--mullvad_daemon/src/management_interface.rs12
2 files changed, 17 insertions, 9 deletions
diff --git a/mullvad_daemon/src/main.rs b/mullvad_daemon/src/main.rs
index 5ba2f336fd..682d6b1290 100644
--- a/mullvad_daemon/src/main.rs
+++ b/mullvad_daemon/src/main.rs
@@ -50,6 +50,10 @@ error_chain!{
description("Error in the management interface")
display("Management interface error: {}", msg)
}
+ InvalidSettings(msg: &'static str) {
+ description("Invalid settings")
+ display("Invalid Settings: {}", msg)
+ }
}
}
@@ -119,7 +123,7 @@ struct Daemon {
// picking a new one for each retry.
remote_iter: std::iter::Cycle<std::iter::Cloned<std::slice::Iter<'static, Endpoint>>>,
// The current account token for now. Should be moved into the settings later.
- account_token: String,
+ account_token: Option<String>,
}
impl Daemon {
@@ -137,7 +141,7 @@ impl Daemon {
tunnel_close_handle: None,
management_interface_broadcaster,
remote_iter: REMOTES.iter().cloned().cycle(),
- account_token: "0".to_owned(),
+ account_token: None,
},
)
}
@@ -315,7 +319,11 @@ impl Daemon {
ErrorKind::InvalidState
);
let remote = self.remote_iter.next().unwrap();
- let tunnel_monitor = self.spawn_tunnel_monitor(remote, self.account_token.as_str())?;
+ let account_token = self.account_token
+ .as_ref()
+ .ok_or(ErrorKind::InvalidSettings("No account token"))?
+ .clone();
+ let tunnel_monitor = self.spawn_tunnel_monitor(remote, &account_token)?;
self.tunnel_close_handle = Some(tunnel_monitor.close_handle());
self.spawn_tunnel_monitor_wait_thread(tunnel_monitor);
diff --git a/mullvad_daemon/src/management_interface.rs b/mullvad_daemon/src/management_interface.rs
index 44765f0ac5..4b5a104d5e 100644
--- a/mullvad_daemon/src/management_interface.rs
+++ b/mullvad_daemon/src/management_interface.rs
@@ -50,11 +50,11 @@ build_rpc_trait! {
/// Set which account to connect with.
#[rpc(name = "set_account")]
- fn set_account(&self, AccountToken) -> Result<(), Error>;
+ fn set_account(&self, Option<AccountToken>) -> Result<(), Error>;
/// Get which account is configured.
#[rpc(async, name = "get_account")]
- fn get_account(&self) -> BoxFuture<AccountToken, Error>;
+ fn get_account(&self) -> BoxFuture<Option<AccountToken>, Error>;
/// Set which country to connect to
#[rpc(name = "set_country")]
@@ -118,9 +118,9 @@ pub enum TunnelCommand {
/// Request the current state.
GetState(sync::oneshot::Sender<SecurityState>),
/// Set which account token to use for subsequent connection attempts.
- SetAccount(AccountToken),
+ SetAccount(Option<AccountToken>),
/// Request the current account token being used.
- GetAccount(sync::oneshot::Sender<AccountToken>),
+ GetAccount(sync::oneshot::Sender<Option<AccountToken>>),
}
#[derive(Default)]
@@ -260,7 +260,7 @@ impl<T: From<TunnelCommand> + 'static + Send> ManagementInterfaceApi for Managem
Ok(HashMap::new())
}
- fn set_account(&self, account_token: AccountToken) -> Result<(), Error> {
+ fn set_account(&self, account_token: Option<AccountToken>) -> Result<(), Error> {
trace!("set_account");
self.tx
.lock()
@@ -269,7 +269,7 @@ impl<T: From<TunnelCommand> + 'static + Send> ManagementInterfaceApi for Managem
.map_err(|_| Error::internal_error())
}
- fn get_account(&self) -> BoxFuture<AccountToken, Error> {
+ fn get_account(&self) -> BoxFuture<Option<AccountToken>, Error> {
trace!("get_account");
let (tx, rx) = sync::oneshot::channel();
match self.tx.lock().unwrap().send(TunnelCommand::GetAccount(tx)) {