Loading core/java/android/net/DnsResolver.java +28 −19 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ public final class DnsResolver { private static final String TAG = "DnsResolver"; private static final int FD_EVENTS = EVENT_INPUT | EVENT_ERROR; private static final int MAXPACKET = 8 * 1024; private static final int SLEEP_TIME = 2; private static final int SLEEP_TIME_MS = 2; @IntDef(prefix = { "CLASS_" }, value = { CLASS_IN Loading Loading @@ -228,8 +228,11 @@ public final class DnsResolver { return; } synchronized (lock) { registerFDListener(executor, queryfd, callback, cancellationSignal, lock); maybeAddCancellationSignal(cancellationSignal, queryfd, lock); if (cancellationSignal == null) return; addCancellationSignal(cancellationSignal, queryfd, lock); } } /** Loading Loading @@ -267,9 +270,11 @@ public final class DnsResolver { }); return; } synchronized (lock) { registerFDListener(executor, queryfd, callback, cancellationSignal, lock); maybeAddCancellationSignal(cancellationSignal, queryfd, lock); if (cancellationSignal == null) return; addCancellationSignal(cancellationSignal, queryfd, lock); } } private class InetAddressAnswerAccumulator extends InetAddressAnswerCallback { Loading Loading @@ -368,10 +373,10 @@ public final class DnsResolver { queryCount++; } else v6fd = null; // TODO: Use device flag to controll the sleep time. // TODO: Use device flag to control the sleep time. // Avoiding gateways drop packets if queries are sent too close together try { Thread.sleep(SLEEP_TIME); Thread.sleep(SLEEP_TIME_MS); } catch (InterruptedException ex) { } if (queryIpv4) { Loading @@ -391,9 +396,13 @@ public final class DnsResolver { final InetAddressAnswerAccumulator accumulator = new InetAddressAnswerAccumulator(queryCount, callback); if (queryIpv6) registerFDListener(executor, v6fd, accumulator, cancellationSignal, lock); if (queryIpv4) registerFDListener(executor, v4fd, accumulator, cancellationSignal, lock); synchronized (lock) { if (queryIpv6) { registerFDListener(executor, v6fd, accumulator, cancellationSignal, lock); } if (queryIpv4) { registerFDListener(executor, v4fd, accumulator, cancellationSignal, lock); } if (cancellationSignal == null) return; cancellationSignal.setOnCancelListener(() -> { synchronized (lock) { Loading @@ -402,6 +411,7 @@ public final class DnsResolver { } }); } } private <T> void registerFDListener(@NonNull Executor executor, @NonNull FileDescriptor queryfd, @NonNull AnswerCallback<T> answerCallback, Loading Loading @@ -443,9 +453,8 @@ public final class DnsResolver { resNetworkCancel(queryfd); // Closes fd, marks it invalid. } private void maybeAddCancellationSignal(@Nullable CancellationSignal cancellationSignal, private void addCancellationSignal(@NonNull CancellationSignal cancellationSignal, @NonNull FileDescriptor queryfd, @NonNull Object lock) { if (cancellationSignal == null) return; cancellationSignal.setOnCancelListener(() -> { synchronized (lock) { cancelQuery(queryfd); Loading Loading
core/java/android/net/DnsResolver.java +28 −19 Original line number Diff line number Diff line Loading @@ -62,7 +62,7 @@ public final class DnsResolver { private static final String TAG = "DnsResolver"; private static final int FD_EVENTS = EVENT_INPUT | EVENT_ERROR; private static final int MAXPACKET = 8 * 1024; private static final int SLEEP_TIME = 2; private static final int SLEEP_TIME_MS = 2; @IntDef(prefix = { "CLASS_" }, value = { CLASS_IN Loading Loading @@ -228,8 +228,11 @@ public final class DnsResolver { return; } synchronized (lock) { registerFDListener(executor, queryfd, callback, cancellationSignal, lock); maybeAddCancellationSignal(cancellationSignal, queryfd, lock); if (cancellationSignal == null) return; addCancellationSignal(cancellationSignal, queryfd, lock); } } /** Loading Loading @@ -267,9 +270,11 @@ public final class DnsResolver { }); return; } synchronized (lock) { registerFDListener(executor, queryfd, callback, cancellationSignal, lock); maybeAddCancellationSignal(cancellationSignal, queryfd, lock); if (cancellationSignal == null) return; addCancellationSignal(cancellationSignal, queryfd, lock); } } private class InetAddressAnswerAccumulator extends InetAddressAnswerCallback { Loading Loading @@ -368,10 +373,10 @@ public final class DnsResolver { queryCount++; } else v6fd = null; // TODO: Use device flag to controll the sleep time. // TODO: Use device flag to control the sleep time. // Avoiding gateways drop packets if queries are sent too close together try { Thread.sleep(SLEEP_TIME); Thread.sleep(SLEEP_TIME_MS); } catch (InterruptedException ex) { } if (queryIpv4) { Loading @@ -391,9 +396,13 @@ public final class DnsResolver { final InetAddressAnswerAccumulator accumulator = new InetAddressAnswerAccumulator(queryCount, callback); if (queryIpv6) registerFDListener(executor, v6fd, accumulator, cancellationSignal, lock); if (queryIpv4) registerFDListener(executor, v4fd, accumulator, cancellationSignal, lock); synchronized (lock) { if (queryIpv6) { registerFDListener(executor, v6fd, accumulator, cancellationSignal, lock); } if (queryIpv4) { registerFDListener(executor, v4fd, accumulator, cancellationSignal, lock); } if (cancellationSignal == null) return; cancellationSignal.setOnCancelListener(() -> { synchronized (lock) { Loading @@ -402,6 +411,7 @@ public final class DnsResolver { } }); } } private <T> void registerFDListener(@NonNull Executor executor, @NonNull FileDescriptor queryfd, @NonNull AnswerCallback<T> answerCallback, Loading Loading @@ -443,9 +453,8 @@ public final class DnsResolver { resNetworkCancel(queryfd); // Closes fd, marks it invalid. } private void maybeAddCancellationSignal(@Nullable CancellationSignal cancellationSignal, private void addCancellationSignal(@NonNull CancellationSignal cancellationSignal, @NonNull FileDescriptor queryfd, @NonNull Object lock) { if (cancellationSignal == null) return; cancellationSignal.setOnCancelListener(() -> { synchronized (lock) { cancelQuery(queryfd); Loading