summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaesu Lee <taesu82.lee@samsung.com>2019-01-28 21:01:39 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-01-28 21:01:39 -0800
commite8bc68602c027226ba8ac00004f2d32e77c9e4fe (patch)
tree03b423d10df8a6a98cfa3b36e7bf454e1d372946
parentf3c33b5980bddfb9632369fda33af6c8b5ae868d (diff)
parentcff7167a71da244b87f81d41f3e72d44cedae9ed (diff)
downloadMms-e8bc68602c027226ba8ac00004f2d32e77c9e4fe.tar.gz
Wake up all MMS requests when wait timeout is expired
am: cff7167a71 Change-Id: I319ec38ff5c1f255cbd29f4230a12115c097bc39
-rw-r--r--src/com/android/mms/service/MmsNetworkManager.java35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java
index a37d31c..274c7c8 100644
--- a/src/com/android/mms/service/MmsNetworkManager.java
+++ b/src/com/android/mms/service/MmsNetworkManager.java
@@ -24,7 +24,6 @@ import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.os.Handler;
import android.os.Looper;
-import android.os.SystemClock;
import com.android.mms.service.exception.MmsNetworkException;
@@ -154,24 +153,26 @@ public class MmsNetworkManager {
LogUtil.d(requestId, "MmsNetworkManager: start new network request");
startNewNetworkRequestLocked();
}
- final long shouldEnd = SystemClock.elapsedRealtime() + NETWORK_ACQUIRE_TIMEOUT_MILLIS;
- long waitTime = NETWORK_ACQUIRE_TIMEOUT_MILLIS;
- while (waitTime > 0) {
- try {
- this.wait(waitTime);
- } catch (InterruptedException e) {
- LogUtil.w(requestId, "MmsNetworkManager: acquire network wait interrupted");
- }
- if (mNetwork != null) {
- // Success
- return;
- }
- // Calculate remaining waiting time to make sure we wait the full timeout period
- waitTime = shouldEnd - SystemClock.elapsedRealtime();
+ try {
+ this.wait(NETWORK_ACQUIRE_TIMEOUT_MILLIS);
+ } catch (InterruptedException e) {
+ LogUtil.w(requestId, "MmsNetworkManager: acquire network wait interrupted");
+ }
+ if (mNetwork != null) {
+ // Success
+ return;
}
- // Timed out, so release the request and fail
+
+ // Timed out
LogUtil.e(requestId, "MmsNetworkManager: timed out");
- releaseRequestLocked(mNetworkCallback);
+ if (mNetworkCallback != null) {
+ // Release the network request and wake up all the MmsRequests for fast-fail
+ // together.
+ // TODO: Start new network request for remaining MmsRequests?
+ releaseRequestLocked(mNetworkCallback);
+ this.notifyAll();
+ }
+
throw new MmsNetworkException("Acquiring network timed out");
}
}