diff options
author | Shishir Agrawal <shishir@google.com> | 2015-02-23 15:28:35 -0800 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2015-04-20 09:20:45 -0700 |
commit | 29913ad12f13ec18a0d4d8399b4484aa8906df22 (patch) | |
tree | 4b4228ed3c2673c02e82339c796331315d50c90d /src/java/com | |
parent | 2f1185206c49278a34e45304141d69c46ea3bb36 (diff) | |
download | android_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.java | 1 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/dataconnection/DcTracker.java | 10 |
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(); } } } |