VpnService: stop VPN when unknown DNS servers show up.

Bug: 5002601
Change-Id: I5459db009e7391ff874623cb1830065ac75c80ed
This commit is contained in:
Chia-chi Yeh 2011-07-08 17:59:54 -07:00
parent b30faa2e11
commit fa1bb594cc

View File

@ -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() {