diff options
author | Taesu Lee <taesu82.lee@samsung.com> | 2019-01-28 21:01:39 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-01-28 21:01:39 -0800 |
commit | e8bc68602c027226ba8ac00004f2d32e77c9e4fe (patch) | |
tree | 03b423d10df8a6a98cfa3b36e7bf454e1d372946 | |
parent | f3c33b5980bddfb9632369fda33af6c8b5ae868d (diff) | |
parent | cff7167a71da244b87f81d41f3e72d44cedae9ed (diff) | |
download | Mms-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.java | 35 |
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"); } } |