diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-14 19:15:34 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-15 13:13:11 +0000 |
| commit | 935f1205aa2cf5bf2d349b88822494b9d5b6faef (patch) | |
| tree | 75d8173fded1e75c6d3baed7bcf9e4bbd0b2db7d | |
| parent | 0272f52f801f54e3a744c0d5976373be7f5d8191 (diff) | |
| download | mullvadvpn-935f1205aa2cf5bf2d349b88822494b9d5b6faef.tar.xz mullvadvpn-935f1205aa2cf5bf2d349b88822494b9d5b6faef.zip | |
Implement `MullvadDaemon.reconnect()`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/daemon_interface.rs | 13 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 17 |
3 files changed, 28 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index df608dab69..65d123e31a 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -81,6 +81,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { return getWireguardKey(daemonInterfaceAddress) } + fun reconnect() { + reconnect(daemonInterfaceAddress) + } + fun setAccount(accountToken: String?) { setAccount(daemonInterfaceAddress, accountToken) } @@ -124,6 +128,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { private external fun getState(daemonInterfaceAddress: Long): TunnelState private external fun getVersionInfo(daemonInterfaceAddress: Long): AppVersionInfo? private external fun getWireguardKey(daemonInterfaceAddress: Long): PublicKey? + private external fun reconnect(daemonInterfaceAddress: Long) private external fun setAccount(daemonInterfaceAddress: Long, accountToken: String?) private external fun setAllowLan(daemonInterfaceAddress: Long, allowLan: Boolean) private external fun setAutoConnect(daemonInterfaceAddress: Long, alwaysOn: Boolean) diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs index a376fa6aa8..ceda7b5fd6 100644 --- a/mullvad-jni/src/daemon_interface.rs +++ b/mullvad-jni/src/daemon_interface.rs @@ -60,13 +60,6 @@ impl DaemonInterface { Ok(()) } - // TODO: Implement this all the way on Android. This method is currently unused. - #[allow(dead_code)] - pub fn reconnect(&self) -> Result<()> { - self.send_command(ManagementCommand::Reconnect)?; - Ok(()) - } - pub fn generate_wireguard_key(&self) -> Result<KeygenEvent> { let (tx, rx) = oneshot::channel(); @@ -153,6 +146,12 @@ impl DaemonInterface { rx.wait().map_err(|_| Error::NoResponse) } + pub fn reconnect(&self) -> Result<()> { + self.send_command(ManagementCommand::Reconnect)?; + + Ok(()) + } + pub fn get_wireguard_key(&self) -> Result<Option<wireguard::PublicKey>> { let (tx, rx) = oneshot::channel(); diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index dd1fd939b8..3be27632b4 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -653,6 +653,23 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_getWire #[no_mangle] #[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_reconnect( + _: JNIEnv<'_>, + _: JObject<'_>, + daemon_interface_address: jlong, +) { + if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) { + if let Err(error) = daemon_interface.reconnect() { + log::error!( + "{}", + error.display_chain_with_msg("Failed to request daemon to reconnect") + ); + } + } +} + +#[no_mangle] +#[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setAccount( env: JNIEnv<'_>, _: JObject<'_>, |
