diff options
| author | Taesu Lee <taesu82.lee@samsung.com> | 2021-06-28 13:22:15 +0900 |
|---|---|---|
| committer | Taesu Lee <taesu82.lee@samsung.com> | 2021-06-28 09:14:39 +0000 |
| commit | 6e2ecfb97f4093c4d712128852e36509546a40b0 (patch) | |
| tree | 56d5ed5ab8c0e1f2ed68a9ba5f6852b35d0578d1 | |
| parent | f9a72a813d5bbcc467ca63348ae740cbd0b87f08 (diff) | |
| download | platform_packages_services_Mms-android-s-beta-5.tar.gz platform_packages_services_Mms-android-s-beta-5.tar.bz2 platform_packages_services_Mms-android-s-beta-5.zip | |
Reset an MMS HTTP client when a network disconnects or is suspendedandroid-s-beta-5android-s-beta-4android-s-beta-3android-s-beta-5android-s-beta-4
Clean up the MMS HTTP client also when an MMS network is reset. And it
registers a receiver for ACTION_SIM_CARD_STATE_CHANGED for the requests
waiting for other available networks following onLost().
Bug: 192209300
Test: make RunMmsServiceRoboTests ROBOTEST_FILTER=MmsNetworkManagerTest
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I470db056a4f3afb989bbfd39ccf8ff8e0b04adf9
| -rw-r--r-- | src/com/android/mms/service/MmsNetworkManager.java | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java index 670ed81..6799d29 100644 --- a/src/com/android/mms/service/MmsNetworkManager.java +++ b/src/com/android/mms/service/MmsNetworkManager.java @@ -149,7 +149,10 @@ public class MmsNetworkManager { LogUtil.w("NetworkCallbackListener.onLost: network=" + network); synchronized (MmsNetworkManager.this) { // Wait for other available network. Not notify. - if (network.equals(mNetwork)) mNetwork = null; + if (network.equals(mNetwork)) { + mNetwork = null; + mMmsHttpClient = null; + } } } @@ -176,6 +179,7 @@ public class MmsNetworkManager { if (network.equals(mNetwork) && !isAvailable) { // Current network becomes suspended. mNetwork = null; + mMmsHttpClient = null; // Not notify. Either wait for other available network or current network to // become available again. return; @@ -265,23 +269,27 @@ public class MmsNetworkManager { LogUtil.d(requestId, "MmsNetworkManager: already available"); return; } - // Not available, so start a new request if not done yet - if (mNetworkCallback == null) { + + if (!mReceiverRegistered) { mPhoneId = mDeps.getPhoneId(mSubId); if (mPhoneId == SubscriptionManager.INVALID_PHONE_INDEX || mPhoneId == SubscriptionManager.DEFAULT_PHONE_INDEX) { throw new MmsNetworkException("Invalid Phone Id: " + mPhoneId); } - LogUtil.d(requestId, "MmsNetworkManager: start new network request"); - startNewNetworkRequestLocked(networkRequestTimeoutMillis); - // Register a receiver to listen to ACTION_SIM_CARD_STATE_CHANGED mContext.registerReceiver( mReceiver, new IntentFilter(TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED)); mReceiverRegistered = true; } + + // Not available, so start a new request if not done yet + if (mNetworkCallback == null) { + LogUtil.d(requestId, "MmsNetworkManager: start new network request"); + startNewNetworkRequestLocked(networkRequestTimeoutMillis); + } + try { this.wait(networkRequestTimeoutMillis + mDeps.getAdditionalNetworkAcquireTimeoutMillis()); @@ -305,7 +313,7 @@ public class MmsNetworkManager { "MmsNetworkManager: timed out with networkRequestTimeoutMillis=" + networkRequestTimeoutMillis + " and ADDITIONAL_NETWORK_ACQUIRE_TIMEOUT_MILLIS=" - + ADDITIONAL_NETWORK_ACQUIRE_TIMEOUT_MILLIS); + + mDeps.getAdditionalNetworkAcquireTimeoutMillis()); // Release the network request and wake up all the MmsRequests for fast-fail // together. // TODO: Start new network request for remaining MmsRequests? |
