Stop using shared DUN APN when tethering stops.
Even if other people are sharing the connection (ie, carrier wants default and tethered traffic on the same APN) stop using a carrier-described APN when the tethering stops. bug:5525764 Change-Id: I95ed2aaed4d79519d233a62cf2945edead8114bc
This commit is contained in:
@@ -1031,9 +1031,14 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
if ((ni.isConnectedOrConnecting() == true) &&
|
if ((ni.isConnectedOrConnecting() == true) &&
|
||||||
!network.isTeardownRequested()) {
|
!network.isTeardownRequested()) {
|
||||||
if (ni.isConnected() == true) {
|
if (ni.isConnected() == true) {
|
||||||
|
final long token = Binder.clearCallingIdentity();
|
||||||
|
try {
|
||||||
// add the pid-specific dns
|
// add the pid-specific dns
|
||||||
handleDnsConfigurationChange(usedNetworkType);
|
handleDnsConfigurationChange(usedNetworkType);
|
||||||
if (VDBG) log("special network already active");
|
if (VDBG) log("special network already active");
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(token);
|
||||||
|
}
|
||||||
return Phone.APN_ALREADY_ACTIVE;
|
return Phone.APN_ALREADY_ACTIVE;
|
||||||
}
|
}
|
||||||
if (VDBG) log("special network already connecting");
|
if (VDBG) log("special network already connecting");
|
||||||
@@ -1221,6 +1226,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!ConnectivityManager.isNetworkTypeValid(networkType)) {
|
if (!ConnectivityManager.isNetworkTypeValid(networkType)) {
|
||||||
|
if (DBG) log("requestRouteToHostAddress on invalid network: " + networkType);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
NetworkStateTracker tracker = mNetTrackers[networkType];
|
NetworkStateTracker tracker = mNetTrackers[networkType];
|
||||||
@@ -1233,11 +1239,16 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
final long token = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
InetAddress addr = InetAddress.getByAddress(hostAddress);
|
InetAddress addr = InetAddress.getByAddress(hostAddress);
|
||||||
LinkProperties lp = tracker.getLinkProperties();
|
LinkProperties lp = tracker.getLinkProperties();
|
||||||
return addRouteToAddress(lp, addr);
|
return addRouteToAddress(lp, addr);
|
||||||
} catch (UnknownHostException e) {}
|
} catch (UnknownHostException e) {
|
||||||
|
if (DBG) log("requestRouteToHostAddress got " + e.toString());
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(token);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1277,7 +1288,10 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
|
|
||||||
private boolean modifyRoute(String ifaceName, LinkProperties lp, RouteInfo r, int cycleCount,
|
private boolean modifyRoute(String ifaceName, LinkProperties lp, RouteInfo r, int cycleCount,
|
||||||
boolean doAdd, boolean toDefaultTable) {
|
boolean doAdd, boolean toDefaultTable) {
|
||||||
if ((ifaceName == null) || (lp == null) || (r == null)) return false;
|
if ((ifaceName == null) || (lp == null) || (r == null)) {
|
||||||
|
if (DBG) log("modifyRoute got unexpected null: " + ifaceName + ", " + lp + ", " + r);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (cycleCount > MAX_HOSTROUTE_CYCLE_COUNT) {
|
if (cycleCount > MAX_HOSTROUTE_CYCLE_COUNT) {
|
||||||
loge("Error modifying route - too much recursion");
|
loge("Error modifying route - too much recursion");
|
||||||
@@ -1309,7 +1323,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// never crash - catch them all
|
// never crash - catch them all
|
||||||
if (VDBG) loge("Exception trying to add a route: " + e);
|
if (DBG) loge("Exception trying to add a route: " + e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1323,7 +1337,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
mNetd.removeRoute(ifaceName, r);
|
mNetd.removeRoute(ifaceName, r);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// never crash - catch them all
|
// never crash - catch them all
|
||||||
if (VDBG) loge("Exception trying to remove a route: " + e);
|
if (DBG) loge("Exception trying to remove a route: " + e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1335,7 +1349,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
mNetd.removeSecondaryRoute(ifaceName, r);
|
mNetd.removeSecondaryRoute(ifaceName, r);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// never crash - catch them all
|
// never crash - catch them all
|
||||||
if (VDBG) loge("Exception trying to remove a route: " + e);
|
if (DBG) loge("Exception trying to remove a route: " + e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1998,7 +2012,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
mNetd.removeRoute(ifaceName, r);
|
mNetd.removeRoute(ifaceName, r);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
// never crash - catch them all
|
// never crash - catch them all
|
||||||
if (VDBG) loge("Exception trying to remove a route: " + e);
|
if (DBG) loge("Exception trying to remove a route: " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2212,7 +2226,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses));
|
mNetd.setDnsServersForInterface(iface, NetworkUtils.makeStrings(dnses));
|
||||||
mNetd.setDefaultInterfaceForDns(iface);
|
mNetd.setDefaultInterfaceForDns(iface);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (VDBG) loge("exception setting default dns interface: " + e);
|
if (DBG) loge("exception setting default dns interface: " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!domains.equals(SystemProperties.get("net.dns.search"))) {
|
if (!domains.equals(SystemProperties.get("net.dns.search"))) {
|
||||||
@@ -2242,7 +2256,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
|
|||||||
mNetd.setDnsServersForInterface(p.getInterfaceName(),
|
mNetd.setDnsServersForInterface(p.getInterfaceName(),
|
||||||
NetworkUtils.makeStrings(dnses));
|
NetworkUtils.makeStrings(dnses));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
if (VDBG) loge("exception setting dns servers: " + e);
|
if (DBG) loge("exception setting dns servers: " + e);
|
||||||
}
|
}
|
||||||
// set per-pid dns for attached secondary nets
|
// set per-pid dns for attached secondary nets
|
||||||
List pids = mNetRequestersPids[netType];
|
List pids = mNetRequestersPids[netType];
|
||||||
|
|||||||
Reference in New Issue
Block a user