aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com
diff options
context:
space:
mode:
authorShishir Agrawal <shishir@google.com>2015-02-23 15:28:35 -0800
committerThe Android Automerger <android-build@google.com>2015-04-20 09:20:45 -0700
commit29913ad12f13ec18a0d4d8399b4484aa8906df22 (patch)
tree4b4228ed3c2673c02e82339c796331315d50c90d /src/java/com
parent2f1185206c49278a34e45304141d69c46ea3bb36 (diff)
downloadandroid_frameworks_opt_telephony-29913ad12f13ec18a0d4d8399b4484aa8906df22.tar.gz
android_frameworks_opt_telephony-29913ad12f13ec18a0d4d8399b4484aa8906df22.tar.bz2
android_frameworks_opt_telephony-29913ad12f13ec18a0d4d8399b4484aa8906df22.zip
DcTracker: Cleanup connections when IccRecords is destroyed.
The IccRecords are destroyed when the SIM goes through a state change like a refresh reset. Attempting to setup data connections when in this case can lead to incorrect APNs being passed to the radio. The change will cleanup all data connections when IccRecords are disposed off. New data connections will not be setup because SIM ready checks are done before setting them up. Bug: 19379406 Change-Id: Ide24ec3ab08bd8e76d4a98a47b4f0509987c11eb
Diffstat (limited to 'src/java/com')
-rw-r--r--src/java/com/android/internal/telephony/Phone.java1
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DcTracker.java10
2 files changed, 11 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java
index 3d2d30403..32966ae89 100644
--- a/src/java/com/android/internal/telephony/Phone.java
+++ b/src/java/com/android/internal/telephony/Phone.java
@@ -109,6 +109,7 @@ public interface Phone {
static final String REASON_CONNECTED = "connected";
static final String REASON_SINGLE_PDN_ARBITRATION = "SinglePdnArbitration";
static final String REASON_DATA_SPECIFIC_DISABLED = "specificDisabled";
+ static final String REASON_SIM_NOT_READY = "simNotReady";
// Used for band mode selection methods
static final int BM_UNSPECIFIED = 0; // selected by baseband automatically
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
index 60bc558b1..5a456d05e 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcTracker.java
@@ -1528,6 +1528,14 @@ public final class DcTracker extends DcTrackerBase {
setupDataOnConnectableApns(Phone.REASON_SIM_LOADED);
}
+ private void onSimNotReady() {
+ if (DBG) log("onSimNotReady");
+
+ cleanUpAllConnections(true, Phone.REASON_SIM_NOT_READY);
+ mAllApnSettings = null;
+ mAutoAttachOnCreationConfig = false;
+ }
+
@Override
protected void onSetDependencyMet(String apnType, boolean met) {
// don't allow users to tweak hipri to work around default dependency not met
@@ -2771,6 +2779,8 @@ public final class DcTracker extends DcTrackerBase {
mIccRecords.set(newIccRecords);
newIccRecords.registerForRecordsLoaded(
this, DctConstants.EVENT_RECORDS_LOADED, null);
+ } else {
+ onSimNotReady();
}
}
}