diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2019-06-25 23:45:41 +0100 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2019-06-26 14:18:38 +0100 |
| commit | 5b693141c02748ae104b980023f3e7a9e1b501dc (patch) | |
| tree | 656d38142ffaf74a4d9748d4712b03b537056d5e | |
| parent | 5ec6e66436e9ed4dd77cafb00b0ba003ed7b9eff (diff) | |
| download | mullvadvpn-5b693141c02748ae104b980023f3e7a9e1b501dc.tar.xz mullvadvpn-5b693141c02748ae104b980023f3e7a9e1b501dc.zip | |
Add KeygenEvent to mullvad-jni
| -rw-r--r-- | mullvad-jni/src/daemon_interface.rs | 8 | ||||
| -rw-r--r-- | mullvad-jni/src/jni_event_listener.rs | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 8 |
3 files changed, 14 insertions, 7 deletions
diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs index e91885fc95..a99c6e7cac 100644 --- a/mullvad-jni/src/daemon_interface.rs +++ b/mullvad-jni/src/daemon_interface.rs @@ -2,7 +2,7 @@ use futures::{sync::oneshot, Future}; use mullvad_daemon::{DaemonCommandSender, ManagementCommand}; use mullvad_types::{ account::AccountData, location::GeoIpLocation, relay_constraints::RelaySettingsUpdate, - relay_list::RelayList, settings::Settings, states::TargetState, + relay_list::RelayList, settings::Settings, states::TargetState, wireguard::KeygenEvent, }; use parking_lot::Mutex; use talpid_types::{net::wireguard, tunnel::TunnelStateTransition}; @@ -64,14 +64,12 @@ impl DaemonInterface { Ok(()) } - pub fn generate_wireguard_key(&self) -> Result<()> { + pub fn generate_wireguard_key(&self) -> Result<KeygenEvent> { let (tx, rx) = oneshot::channel(); self.send_command(ManagementCommand::GenerateWireguardKey(tx))?; - rx.wait() - .map_err(|_| Error::NoResponse)? - .map_err(Error::RpcError) + rx.wait().map_err(|_| Error::NoResponse) } pub fn get_account_data(&self, account_token: String) -> Result<AccountData> { diff --git a/mullvad-jni/src/jni_event_listener.rs b/mullvad-jni/src/jni_event_listener.rs index 9a89d85927..57d9bb6e76 100644 --- a/mullvad-jni/src/jni_event_listener.rs +++ b/mullvad-jni/src/jni_event_listener.rs @@ -5,7 +5,7 @@ use jni::{ AttachGuard, JNIEnv, }; use mullvad_daemon::EventListener; -use mullvad_types::{relay_list::RelayList, settings::Settings}; +use mullvad_types::{relay_list::RelayList, settings::Settings, wireguard::KeygenEvent}; use std::{sync::mpsc, thread}; use talpid_types::{tunnel::TunnelStateTransition, ErrorExt}; @@ -48,6 +48,9 @@ impl EventListener for JniEventListener { fn notify_relay_list(&self, relay_list: RelayList) { let _ = self.0.send(Event::RelayList(relay_list)); } + + // TODO: manage key events properly + fn notify_key_event(&self, _key_event: KeygenEvent) {} } struct JniEventHandler<'env> { diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index e7a6e862fa..947d2b5f70 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -18,6 +18,7 @@ use jni::{ }; use lazy_static::lazy_static; use mullvad_daemon::{logging, version, Daemon, DaemonCommandSender}; +use mullvad_types::wireguard::KeygenEvent; use parking_lot::RwLock; use std::{ collections::HashMap, @@ -225,7 +226,12 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_generateWiregua _: JObject, ) -> jboolean { match DAEMON_INTERFACE.generate_wireguard_key() { - Ok(()) => JNI_TRUE, + Ok(KeygenEvent::NewKey(_)) => JNI_TRUE, + // TODO: Handle the new result better. + Ok(keygen_failure) => { + log::error!("Failed to generate wireguard key {:?}", keygen_failure); + JNI_FALSE + } Err(error) => { log::error!( "{}", |
