diff options
| author | 2011-07-11 10:25:28 -0700 | |
|---|---|---|
| committer | 2011-07-11 10:25:28 -0700 | |
| commit | ebf0d2dd562492fc3c87f4c1676ca0416a83d9cc (patch) | |
| tree | 3c3f64bce9fa84c2b84082927a245821c3e307de | |
| parent | 8498b8681f44ee90dc3138395415fdd0eeecb176 (diff) | |
| parent | fa1bb594cc92e5c9384ed37e9ab0e1f227c50795 (diff) | |
Merge "VpnService: stop VPN when unknown DNS servers show up." into honeycomb-LTE
| -rw-r--r-- | vpn/java/com/android/server/vpn/VpnService.java | 18 |
1 files 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 4966c060e5..f94044c113 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<E extends VpnProfile> { 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<E extends VpnProfile> { } // 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() { |