Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4d3f36f authored by Hung-ying Tyan's avatar Hung-ying Tyan Committed by Android Git Automerger
Browse files

am 1257d330: Merge "Clean up pending sessions on incoming call in SipService" into gingerbread

Merge commit '1257d330' into gingerbread-plus-aosp

* commit '1257d330':
  Clean up pending sessions on incoming call in SipService
parents de8635e4 1257d330
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -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.