summaryrefslogtreecommitdiff
path: root/src/com/android/mms/service/MmsNetworkManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/mms/service/MmsNetworkManager.java')
-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");
}
}