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

Commit 37607cbb authored by Chiachang Wang's avatar Chiachang Wang
Browse files

Use UnknownHostException directly without casting it

ExecutionException cannot be casted to UnknownHostException. If
an unresolvable dns server is set, the ExecutionException will be
triggered and cause cast exception.

Bug: 123435238
Test: atest com.android.server.connectivity.NetworkMonitorTest
Test: Manual test with setting an unresolvable hostname in private
      dns config
Change-Id: Icdbc33ddd03740043cac2eff7dec209ffb500e2a
parent d53f5498
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public class DnsUtils {

        if (result.size() == 0) {
            logger.log("FAIL: " + errorMsg.toString());
            throw new UnknownHostException(errorMsg.toString());
            throw new UnknownHostException(host);
        }
        logger.log("OK: " + host + " " + result.toString());
        return result.toArray(new InetAddress[0]);
@@ -134,20 +134,19 @@ public class DnsUtils {

        TrafficStats.setThreadStatsTag(oldTag);

        String errorMsg = null;
        List<InetAddress> result = null;
        Exception exception = null;
        try {
            result = resultRef.get(timeoutMs, TimeUnit.MILLISECONDS);
        } catch (ExecutionException e) {
            exception = e;
            errorMsg = e.getMessage();
        } catch (TimeoutException | InterruptedException e) {
            exception = new UnknownHostException("Timeout");
            errorMsg = "Timeout";
        } finally {
            logDnsResult(result, watch.stop() /* latency */, logger, type,
                    exception != null ? exception.getMessage() : "" /* errorMsg */);
            logDnsResult(result, watch.stop() /* latency */, logger, type, errorMsg);
        }

        if (null != exception) throw (UnknownHostException) exception;
        if (null != errorMsg) throw new UnknownHostException(host);

        return result.toArray(new InetAddress[0]);
    }