From 6a4610a1dc7e9e27d91e9bf1477972648ffbaf17 Mon Sep 17 00:00:00 2001 From: Chia-chi Yeh Date: Fri, 8 Jul 2011 17:59:54 -0700 Subject: VpnService: stop VPN when unknown DNS servers show up. Bug: 5002601 Change-Id: I5459db009e7391ff874623cb1830065ac75c80ed --- vpn/java/com/android/server/vpn/VpnService.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/vpn/java/com/android/server/vpn/VpnService.java b/vpn/java/com/android/server/vpn/VpnService.java index 4966c060e52d..f94044c11357 100644 --- a/vpn/java/com/android/server/vpn/VpnService.java +++ b/vpn/java/com/android/server/vpn/VpnService.java @@ -325,7 +325,7 @@ abstract class VpnService { if (heavyCheck) { i = 10; - if (checkConnectivity()) checkDns(); + checkConnectivity(); } long t = 1000L - System.currentTimeMillis() + now; if (t > 100L) VpnService.this.wait(t); @@ -356,22 +356,24 @@ abstract class VpnService { } // returns false if vpn connectivity is broken - private boolean checkConnectivity() { - if (mDaemons.anyDaemonStopped() || isLocalIpChanged()) { + private void checkConnectivity() { + if (mDaemons.anyDaemonStopped() || isLocalIpChanged() || isDnsChanged()) { onError(new IOException("Connectivity lost")); - return false; - } else { - return true; } } - private void checkDns() { + private boolean isDnsChanged() { String dns1 = SystemProperties.get(DNS1); String vpnDns1 = SystemProperties.get(VPN_DNS1); - if (!dns1.equals(vpnDns1) && dns1.equals(mOriginalDns1)) { + if (dns1.equals(vpnDns1)) { + return false; + } + if (dns1.equals(mOriginalDns1)) { // dhcp expires? setVpnDns(); + return false; } + return true; } private boolean isLocalIpChanged() { -- cgit v1.2.3-59-g8ed1b