aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/config/InetAddresses.java
diff options
context:
space:
mode:
authorHarsh Shandilya <msfjarvis@gmail.com>2019-09-30 12:29:06 +0530
committerJason A. Donenfeld <Jason@zx2c4.com>2019-09-30 19:45:11 +0200
commitf7e016321c284c74a4ddd178b3ef46e105c01168 (patch)
treef14aad413e0e570b6aac434510e04fc23669b034 /app/src/main/java/com/wireguard/config/InetAddresses.java
parentInetAddresses: prepare for Android 10's real method support (diff)
downloadwireguard-android-f7e016321c284c74a4ddd178b3ef46e105c01168.tar.xz
wireguard-android-f7e016321c284c74a4ddd178b3ef46e105c01168.zip
Migrate to Android 10
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
Diffstat (limited to '')
-rw-r--r--app/src/main/java/com/wireguard/config/InetAddresses.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/app/src/main/java/com/wireguard/config/InetAddresses.java b/app/src/main/java/com/wireguard/config/InetAddresses.java
index 69fd6cfb..864082e2 100644
--- a/app/src/main/java/com/wireguard/config/InetAddresses.java
+++ b/app/src/main/java/com/wireguard/config/InetAddresses.java
@@ -5,6 +5,7 @@
package com.wireguard.config;
+import android.os.Build;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.Inet4Address;
@@ -15,9 +16,12 @@ import java.net.InetAddress;
* Utility methods for creating instances of {@link InetAddress}.
*/
public final class InetAddresses {
- private static final Method PARSER_METHOD;
+ private static Method PARSER_METHOD;
- static {
+
+ private static Method getParserMethod() {
+ if (PARSER_METHOD != null)
+ return PARSER_METHOD;
try {
// This method is only present on Android.
// noinspection JavaReflectionMemberAccess
@@ -25,6 +29,7 @@ public final class InetAddresses {
} catch (final NoSuchMethodException e) {
throw new RuntimeException(e);
}
+ return PARSER_METHOD;
}
private InetAddresses() {
@@ -41,7 +46,10 @@ public final class InetAddresses {
if (address.isEmpty())
throw new ParseException(InetAddress.class, address, "Empty address");
try {
- return (InetAddress) PARSER_METHOD.invoke(null, address);
+ if (Build.VERSION.SDK_INT < 29)
+ return (InetAddress) getParserMethod().invoke(null, address);
+ else
+ return android.net.InetAddresses.parseNumericAddress(address);
} catch (final IllegalAccessException | InvocationTargetException e) {
final Throwable cause = e.getCause();
// Re-throw parsing exceptions with the original type, as callers might try to catch