Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3df03a83 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix InetAddressCompat exception handling" am: cd37173d

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1645300

Change-Id: I1d65d6b011e5ce585835e1c9df9eea0afb74b0f4
parents 1941a166 cd37173d
Loading
Loading
Loading
Loading
+25 −13
Original line number Diff line number Diff line
@@ -41,7 +41,12 @@ public class InetAddressCompat {
    public static void clearDnsCache() {
        try {
            InetAddress.class.getMethod("clearDnsCache").invoke(null);
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
        } catch (InvocationTargetException e) {
            if (e.getCause() instanceof RuntimeException) {
                throw (RuntimeException) e.getCause();
            }
            throw new IllegalStateException("Unknown InvocationTargetException", e.getCause());
        } catch (IllegalAccessException | NoSuchMethodException e) {
            Log.wtf(InetAddressCompat.class.getSimpleName(), "Error clearing DNS cache", e);
        }
    }
@@ -51,13 +56,7 @@ public class InetAddressCompat {
     */
    public static InetAddress[] getAllByNameOnNet(String host, int netId) throws
            UnknownHostException {
        try {
            return (InetAddress[]) InetAddress.class.getMethod("getAllByNameOnNet",
                    String.class, int.class).invoke(null, host, netId);
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling getAllByNameOnNet", e);
            throw new IllegalStateException("Error querying via getAllNameOnNet", e);
        }
        return (InetAddress[]) callGetByNameMethod("getAllByNameOnNet", host, netId);
    }

    /**
@@ -65,12 +64,25 @@ public class InetAddressCompat {
     */
    public static InetAddress getByNameOnNet(String host, int netId) throws
            UnknownHostException {
        return (InetAddress) callGetByNameMethod("getByNameOnNet", host, netId);
    }

    private static Object callGetByNameMethod(String method, String host, int netId)
            throws UnknownHostException {
        try {
            return (InetAddress) InetAddress.class.getMethod("getByNameOnNet",
                    String.class, int.class).invoke(null, host, netId);
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling getAllByNameOnNet", e);
            throw new IllegalStateException("Error querying via getByNameOnNet", e);
            return InetAddress.class.getMethod(method, String.class, int.class)
                    .invoke(null, host, netId);
        } catch (InvocationTargetException e) {
            if (e.getCause() instanceof UnknownHostException) {
                throw (UnknownHostException) e.getCause();
            }
            if (e.getCause() instanceof RuntimeException) {
                throw (RuntimeException) e.getCause();
            }
            throw new IllegalStateException("Unknown InvocationTargetException", e.getCause());
        } catch (IllegalAccessException | NoSuchMethodException e) {
            Log.wtf(InetAddressCompat.class.getSimpleName(), "Error calling " + method, e);
            throw new IllegalStateException("Error querying via " + method, e);
        }
    }
}