From d324dceceff5fc85682212092b8321414bda3ad6 Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Wed, 25 Apr 2018 17:27:28 +0900 Subject: [PATCH] Fix CaptivePortalLoginActivity probes to bypass Private DNS Test: as follows - built - flashed - booted - runtest frameworks-net passes - manual testing on captive portal networks Bug: 64133961 Bug: 77140445 Bug: 78548486 Merged-In: I749e8b5dba3b4af9ecb82bfb558c6f0e664531a4 Merged-In: Ic76d55861f385d1aecd360adda7f10142d083a47 Change-Id: Idbc4d90eeec257b36c5f374d61dea4600a0f8ebb (cherry picked from commit 848d842a3ad94720e1d70db3337048e9568bb9d6) --- .../captiveportallogin/CaptivePortalLoginActivity.java | 3 ++- services/net/java/android/net/dns/ResolvUtil.java | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 0e2a0e00192d8..91c04fa65e24d 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -321,6 +321,7 @@ public class CaptivePortalLoginActivity extends Activity { // TODO: reuse NetworkMonitor facilities for consistent captive portal detection. new Thread(new Runnable() { public void run() { + final Network network = ResolvUtil.makeNetworkWithPrivateDnsBypass(mNetwork); // Give time for captive portal to open. try { Thread.sleep(1000); @@ -329,7 +330,7 @@ public class CaptivePortalLoginActivity extends Activity { HttpURLConnection urlConnection = null; int httpResponseCode = 500; try { - urlConnection = (HttpURLConnection) mNetwork.openConnection(mUrl); + urlConnection = (HttpURLConnection) network.openConnection(mUrl); urlConnection.setInstanceFollowRedirects(false); urlConnection.setConnectTimeout(SOCKET_TIMEOUT_MS); urlConnection.setReadTimeout(SOCKET_TIMEOUT_MS); diff --git a/services/net/java/android/net/dns/ResolvUtil.java b/services/net/java/android/net/dns/ResolvUtil.java index 97d20f4b29220..a2a6615e5f48b 100644 --- a/services/net/java/android/net/dns/ResolvUtil.java +++ b/services/net/java/android/net/dns/ResolvUtil.java @@ -62,4 +62,13 @@ public class ResolvUtil { final long netidForResolv = NETID_USE_LOCAL_NAMESERVERS | (long) network.netId; return new Network((int) netidForResolv); } + + public static Network makeNetworkWithPrivateDnsBypass(Network network) { + return new Network(network) { + @Override + public InetAddress[] getAllByName(String host) throws UnknownHostException { + return blockingResolveAllLocally(network, host); + } + }; + } }