Reset an MMS HTTP client when a network disconnects or is suspended am: 6e2ecfb97f am: 6f2104d54c
Original change: https://android-review.googlesource.com/c/platform/packages/services/Mms/+/1749507
Change-Id: I91a2cd8d51f1df6ac6fa53eb707800f3ecae12b6
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 @@
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 @@
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 @@
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 @@
"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?