From 848d842a3ad94720e1d70db3337048e9568bb9d6 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 Change-Id: Idbc4d90eeec257b36c5f374d61dea4600a0f8ebb --- .../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 2a1bbedd86d44..f66d23dddcab2 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -320,6 +320,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); @@ -328,7 +329,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); + } + }; + } }