Merge "Clean up pending sessions on incoming call in SipService" into gingerbread

This commit is contained in:
Hung-ying Tyan
2010-10-21 23:08:59 -07:00
committed by Android (Google) Code Review

View File

@ -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.