Reduce the spinning while tethering.

Doing too much stuff - don't retry when we know we shouldn't.

bug:3293460
Change-Id: Ic7b0b6486b39377d74df7a35572059ac60d03fa0
This commit is contained in:
Robert Greenwalt
2010-12-17 15:20:36 -08:00
parent 0db51a0631
commit 8ca8876c68

View File

@@ -1574,12 +1574,19 @@ public class ConnectivityService extends IConnectivityManager.Stub {
} }
} }
private void writePidDns(Collection <InetAddress> dnses, int pid) { // return true if results in a change
private boolean writePidDns(Collection <InetAddress> dnses, int pid) {
int j = 1; int j = 1;
boolean changed = false;
for (InetAddress dns : dnses) { for (InetAddress dns : dnses) {
String dnsString = dns.getHostAddress();
if (changed || !dnsString.equals(SystemProperties.get("net.dns" + j + "." + pid))) {
changed = true;
SystemProperties.set("net.dns" + j++ + "." + pid, dns.getHostAddress()); SystemProperties.set("net.dns" + j++ + "." + pid, dns.getHostAddress());
} }
} }
return changed;
}
private void bumpDns() { private void bumpDns() {
/* /*
@@ -1609,37 +1616,51 @@ public class ConnectivityService extends IConnectivityManager.Stub {
LinkProperties p = nt.getLinkProperties(); LinkProperties p = nt.getLinkProperties();
if (p == null) return; if (p == null) return;
Collection<InetAddress> dnses = p.getDnses(); Collection<InetAddress> dnses = p.getDnses();
boolean changed = false;
if (mNetAttributes[netType].isDefault()) { if (mNetAttributes[netType].isDefault()) {
int j = 1; int j = 1;
if (dnses.size() == 0 && mDefaultDns != null) { if (dnses.size() == 0 && mDefaultDns != null) {
String dnsString = mDefaultDns.getHostAddress();
if (!dnsString.equals(SystemProperties.get("net.dns1"))) {
if (DBG) { if (DBG) {
log("no dns provided - using " + mDefaultDns.getHostAddress()); log("no dns provided - using " + dnsString);
}
changed = true;
SystemProperties.set("net.dns1", dnsString);
} }
SystemProperties.set("net.dns1", mDefaultDns.getHostAddress());
j++; j++;
} else { } else {
for (InetAddress dns : dnses) { for (InetAddress dns : dnses) {
String dnsString = dns.getHostAddress();
if (!changed && dnsString.equals(SystemProperties.get("net.dns" + j))) {
j++;
continue;
}
if (DBG) { if (DBG) {
log("adding dns " + dns + " for " + log("adding dns " + dns + " for " +
nt.getNetworkInfo().getTypeName()); nt.getNetworkInfo().getTypeName());
} }
SystemProperties.set("net.dns" + j++, dns.getHostAddress()); changed = true;
SystemProperties.set("net.dns" + j++, dnsString);
} }
} }
for (int k=j ; k<mNumDnsEntries; k++) { for (int k=j ; k<mNumDnsEntries; k++) {
if (changed || !TextUtils.isEmpty(SystemProperties.get("net.dns" + k))) {
if (DBG) log("erasing net.dns" + k); if (DBG) log("erasing net.dns" + k);
changed = true;
SystemProperties.set("net.dns" + k, ""); SystemProperties.set("net.dns" + k, "");
} }
}
mNumDnsEntries = j; mNumDnsEntries = j;
} else { } else {
// set per-pid dns for attached secondary nets // set per-pid dns for attached secondary nets
List pids = mNetRequestersPids[netType]; List pids = mNetRequestersPids[netType];
for (int y=0; y< pids.size(); y++) { for (int y=0; y< pids.size(); y++) {
Integer pid = (Integer)pids.get(y); Integer pid = (Integer)pids.get(y);
writePidDns(dnses, pid.intValue()); changed = writePidDns(dnses, pid.intValue());
} }
} }
bumpDns(); if (changed) bumpDns();
} }
} }