From 8ca8876c68f0eff59ca9fae32b8d2e3f5864460f Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 17 Dec 2010 15:20:36 -0800 Subject: [PATCH] Reduce the spinning while tethering. Doing too much stuff - don't retry when we know we shouldn't. bug:3293460 Change-Id: Ic7b0b6486b39377d74df7a35572059ac60d03fa0 --- .../android/server/ConnectivityService.java | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index e7e4302db0..feb7b63bd9 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -1574,11 +1574,18 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } - private void writePidDns(Collection dnses, int pid) { + // return true if results in a change + private boolean writePidDns(Collection dnses, int pid) { int j = 1; + boolean changed = false; for (InetAddress dns : dnses) { - SystemProperties.set("net.dns" + j++ + "." + pid, dns.getHostAddress()); + String dnsString = dns.getHostAddress(); + if (changed || !dnsString.equals(SystemProperties.get("net.dns" + j + "." + pid))) { + changed = true; + SystemProperties.set("net.dns" + j++ + "." + pid, dns.getHostAddress()); + } } + return changed; } private void bumpDns() { @@ -1609,26 +1616,40 @@ public class ConnectivityService extends IConnectivityManager.Stub { LinkProperties p = nt.getLinkProperties(); if (p == null) return; Collection dnses = p.getDnses(); + boolean changed = false; if (mNetAttributes[netType].isDefault()) { int j = 1; if (dnses.size() == 0 && mDefaultDns != null) { - if (DBG) { - log("no dns provided - using " + mDefaultDns.getHostAddress()); + String dnsString = mDefaultDns.getHostAddress(); + if (!dnsString.equals(SystemProperties.get("net.dns1"))) { + if (DBG) { + log("no dns provided - using " + dnsString); + } + changed = true; + SystemProperties.set("net.dns1", dnsString); } - SystemProperties.set("net.dns1", mDefaultDns.getHostAddress()); j++; } else { for (InetAddress dns : dnses) { + String dnsString = dns.getHostAddress(); + if (!changed && dnsString.equals(SystemProperties.get("net.dns" + j))) { + j++; + continue; + } if (DBG) { log("adding dns " + dns + " for " + nt.getNetworkInfo().getTypeName()); } - SystemProperties.set("net.dns" + j++, dns.getHostAddress()); + changed = true; + SystemProperties.set("net.dns" + j++, dnsString); } } for (int k=j ; k