diff options
author | Wink Saville <wink@google.com> | 2013-08-26 11:47:20 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-08-26 11:47:20 -0700 |
commit | 33283a9726a29b5a79d7885fe194d52c0ebe7450 (patch) | |
tree | 60c455e58dc014936cf0f8177ae072439b7bdf44 | |
parent | b42beeafcf8117fb4ac41dd91fc9e6113c0d6aae (diff) | |
parent | dce52cdbf1eab8bd979bf4676973699c39f7b32e (diff) | |
download | frameworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.zip frameworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.tar.gz frameworks_base-33283a9726a29b5a79d7885fe194d52c0ebe7450.tar.bz2 |
am dce52cdb: DO NOT MERGE: MDST is not ready until connected to DcTracker.
* commit 'dce52cdbf1eab8bd979bf4676973699c39f7b32e':
DO NOT MERGE: MDST is not ready until connected to DcTracker.
-rw-r--r-- | core/java/android/net/MobileDataStateTracker.java | 7 | ||||
-rw-r--r-- | services/java/com/android/server/ConnectivityService.java | 28 |
2 files changed, 30 insertions, 5 deletions
diff --git a/core/java/android/net/MobileDataStateTracker.java b/core/java/android/net/MobileDataStateTracker.java index adad8de..98cccb8 100644 --- a/core/java/android/net/MobileDataStateTracker.java +++ b/core/java/android/net/MobileDataStateTracker.java @@ -375,6 +375,13 @@ public class MobileDataStateTracker implements NetworkStateTracker { return (setEnableApn(mApnType, false) != PhoneConstants.APN_REQUEST_FAILED); } + /** + * @return true if this is ready to operate + */ + public boolean isReady() { + return mDataConnectionTrackerAc != null; + } + @Override public void captivePortalCheckComplete() { // not implemented diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index fa016f4..0670819 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -3572,6 +3572,12 @@ public class ConnectivityService extends IConnectivityManager.Stub { enabled)); } + private boolean isMobileDataStateTrackerReady() { + MobileDataStateTracker mdst = + (MobileDataStateTracker) mNetTrackers[ConnectivityManager.TYPE_MOBILE]; + return (mdst != null) && (mdst.isReady()); + } + @Override public int checkMobileProvisioning(boolean sendNotification, int suggestedTimeOutMs, final ResultReceiver resultReceiver) { @@ -3739,14 +3745,26 @@ public class ConnectivityService extends IConnectivityManager.Stub { } try { - // Enable fail fast as we'll do retries here and use a - // hipri connection so the default connection stays active. - log("isMobileOk: start hipri url=" + params.mUrl); - mCs.setEnableFailFastMobileData(DctConstants.ENABLED); - // Continue trying to connect until time has run out long endTime = SystemClock.elapsedRealtime() + params.mTimeOutMs; + if (!mCs.isMobileDataStateTrackerReady()) { + // Wait for MobileDataStateTracker to be ready. + if (DBG) log("isMobileOk: mdst is not ready"); + while(SystemClock.elapsedRealtime() < endTime) { + if (mCs.isMobileDataStateTrackerReady()) { + // Enable fail fast as we'll do retries here and use a + // hipri connection so the default connection stays active. + if (DBG) log("isMobileOk: mdst ready, enable fail fast of mobile data"); + mCs.setEnableFailFastMobileData(DctConstants.ENABLED); + break; + } + sleep(1); + } + } + + log("isMobileOk: start hipri url=" + params.mUrl); + // First wait until we can start using hipri Binder binder = new Binder(); while(SystemClock.elapsedRealtime() < endTime) { |