summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hung-ying Tyan <tyanh@google.com> 2010-10-21 23:15:20 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2010-10-21 23:15:20 -0700
commitd4d3f36f4c25b41f4253eadd5e67035fe220cad3 (patch)
tree93c8a43feca21f1e0f7c864d49c3a4971018321e
parentde8635e4c4c9f674b52cb6041380c3ef2812630c (diff)
parent1257d330dcfdb87214278c8fc9718ea9fc663df6 (diff)
am 1257d330: Merge "Clean up pending sessions on incoming call in SipService" into gingerbread
Merge commit '1257d330dcfdb87214278c8fc9718ea9fc663df6' into gingerbread-plus-aosp * commit '1257d330dcfdb87214278c8fc9718ea9fc663df6': Clean up pending sessions on incoming call in SipService
-rw-r--r--voip/java/com/android/server/sip/SipService.java15
1 files changed, 13 insertions, 2 deletions
diff --git a/voip/java/com/android/server/sip/SipService.java b/voip/java/com/android/server/sip/SipService.java
index 84e080310ad3..f480fec4b17f 100644
--- a/voip/java/com/android/server/sip/SipService.java
+++ b/voip/java/com/android/server/sip/SipService.java
@@ -441,13 +441,26 @@ public final class SipService extends ISipService.Stub {
private synchronized void addPendingSession(ISipSession session) {
try {
+ cleanUpPendingSessions();
mPendingSessions.put(session.getCallId(), session);
+ if (DEBUG) Log.d(TAG, "#pending sess=" + mPendingSessions.size());
} catch (RemoteException e) {
// should not happen with a local call
Log.e(TAG, "addPendingSession()", e);
}
}
+ private void cleanUpPendingSessions() throws RemoteException {
+ Map.Entry<String, ISipSession>[] entries =
+ mPendingSessions.entrySet().toArray(
+ new Map.Entry[mPendingSessions.size()]);
+ for (Map.Entry<String, ISipSession> entry : entries) {
+ if (entry.getValue().getState() != SipSession.State.INCOMING_CALL) {
+ mPendingSessions.remove(entry.getKey());
+ }
+ }
+ }
+
private synchronized boolean callingSelf(SipSessionGroupExt ringingGroup,
SipSessionGroup.SipSessionImpl ringingSession) {
String callId = ringingSession.getCallId();
@@ -1095,8 +1108,6 @@ public final class SipService extends ISipService.Stub {
}
}
- // TODO: clean up pending SipSession(s) periodically
-
/**
* Timer that can schedule events to occur even when the device is in sleep.
* Only used internally in this package.