aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRobert Greenwalt <rgreenwalt@google.com>2016-08-22 19:40:02 -0700
committerRobert Greenwalt <rgreenwalt@google.com>2016-08-22 19:40:02 -0700
commit76c5a9479d312139740dcaf7644172f2beb2f7e0 (patch)
tree62519b0f50737e6f4e19f7c3a84ba051eab554af /src
parent68d7118dd596c2459c6af3eb531654aafa9fe602 (diff)
downloadandroid_frameworks_opt_telephony-76c5a9479d312139740dcaf7644172f2beb2f7e0.tar.gz
android_frameworks_opt_telephony-76c5a9479d312139740dcaf7644172f2beb2f7e0.tar.bz2
android_frameworks_opt_telephony-76c5a9479d312139740dcaf7644172f2beb2f7e0.zip
Don't tear down a network unnecessarily.
If conditions ease so restricted networks are now allowed don't just assume every up network needs to be torn down. Instead check and see if it's marked restricted (or not, not-restricted) first. bug:30490689 Change-Id: Ib19d45979f6f9e0b605a3e5b39f569a01d30d42b
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DcTracker.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 11e8cc14e..2b4b39b2e 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -909,6 +909,17 @@ public class DcTracker extends Handler {
if (apnContext.isConnectedOrConnecting() &&
apnContext.getApnSetting().isMetered(mPhone.getContext(),
mPhone.getSubId(), mPhone.getServiceState().getDataRoaming())) {
+
+ final DcAsyncChannel dataConnectionAc = apnContext.getDcAc();
+ if (dataConnectionAc != null) {
+ final NetworkCapabilities nc =
+ dataConnectionAc.getNetworkCapabilitiesSync();
+ if (nc != null && nc.hasCapability(NetworkCapabilities.
+ NET_CAPABILITY_NOT_RESTRICTED)) {
+ if (DBG) log("not tearing down unrestricted metered net:" + apnContext);
+ continue;
+ }
+ }
if (DBG) log("tearing down restricted metered net: " + apnContext);
apnContext.setReason(Phone.REASON_DATA_ENABLED);
cleanUpConnection(true, apnContext);