diff options
author | Taesu Lee <taesu82.lee@samsung.com> | 2021-07-07 22:56:04 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-07-07 22:56:04 +0000 |
commit | 1e23b91012b8f5ac054e28859f0db1974ce4f59b (patch) | |
tree | 0ab2c9d0553008a7d24fc7c557e20a6361df03dd | |
parent | fd128b6cf1b0e2fe3d9eeed9126d0e453f3323c6 (diff) | |
parent | 31bda7cf4b00782020c99b75deb4393a24afecb3 (diff) | |
download | Mms-1e23b91012b8f5ac054e28859f0db1974ce4f59b.tar.gz |
Reset an MMS HTTP client when a network disconnects or is suspended am: 6e2ecfb97f am: 6f2104d54c am: 31bda7cf4b
Original change: https://android-review.googlesource.com/c/platform/packages/services/Mms/+/1749507
Change-Id: I84932565dce53fa4eb84a24ced09e0ed9084ef63
-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? |