diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2017-07-03 09:56:50 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2017-07-03 12:47:51 +0200 |
| commit | 3a0bda70eae6240f08e1082a94b0e267a3032dde (patch) | |
| tree | 118e8dbbbe5480430961f81ae272428b86d8aeb0 | |
| parent | ce5aea0e616ae50f7c0ea4b14d945a842b46a726 (diff) | |
| download | mullvadvpn-3a0bda70eae6240f08e1082a94b0e267a3032dde.tar.xz mullvadvpn-3a0bda70eae6240f08e1082a94b0e267a3032dde.zip | |
Change account_token to an Option
| -rw-r--r-- | mullvad_daemon/src/main.rs | 14 | ||||
| -rw-r--r-- | mullvad_daemon/src/management_interface.rs | 12 |
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)) { |
