diff options
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 19 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 1 |
2 files changed, 19 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index e51e9e036e..9998982532 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -17,7 +17,10 @@ use mullvad_types::{ wireguard::KeygenEvent, CustomTunnelEndpoint, }; -use std::{fmt::Debug, net::IpAddr}; +use std::{ + fmt::Debug, + net::{IpAddr, SocketAddr}, +}; use talpid_core::tunnel::tun_provider::TunConfig; use talpid_types::{ net::{wireguard::PublicKey, TransportProtocol}, @@ -161,6 +164,20 @@ impl<'env> IntoJava<'env> for IpAddr { } } +impl<'env> IntoJava<'env> for SocketAddr { + type JavaType = JObject<'env>; + + fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { + let class = get_class("java/net/InetSocketAddress"); + let ip_address = env.auto_local(self.ip().into_java(env)); + let port = self.port() as jint; + let parameters = [JValue::Object(ip_address.as_obj()), JValue::Int(port)]; + + env.new_object(&class, "(Ljava/net/InetAddress;I)V", ¶meters) + .expect("Failed to create InetSocketAddress Java object") + } +} + impl<'env> IntoJava<'env> for IpNetwork { type JavaType = JObject<'env>; diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index baeb4875dc..0d69c2518b 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -31,6 +31,7 @@ const LOG_FILENAME: &str = "daemon.log"; const CLASSES_TO_LOAD: &[&str] = &[ "java/net/InetAddress", + "java/net/InetSocketAddress", "java/util/ArrayList", "java/util/List", "net/mullvad/mullvadvpn/model/AccountData", |
