| Previous | Next |
| RTC_E_REFER_NOT_EXIST | RTC_E_SIP_UNHOLD_OPERATION_PENDING |
RTC_E_SIP_HOLD_OPERATION_PENDING
What the RTC value marks: RTC_E_SIP_HOLD_OPERATION_PENDING
This result should be investigated at the point where RTC handles creating a session, adding or removing participants, and serializing operations that alter call topology, and the condition to prove for this HRESULT is a hold transaction is already pending for the RTC session.
This result is represented as 0x80EE0073 in the RTC interface facility 0xEE; record the symbolic name alongside the unsigned hexadecimal value; a decimal exception alone is poor evidence for RTC protocol diagnosis.
A defensible diagnosis of this result requires you to record pending re-INVITE CSeq, desired/current media direction, and completion callback; in the case, pending hold is serialized offer/answer state, not proof that the call is already on hold.
Protocol and object state
| RTC area | RTC session and participant state |
|---|---|
| Objects to correlate | IRTCSession, session type/state, participant URI, dialog, pending INVITE or join operation |
| Condition to prove | a hold transaction is already pending for the RTC session |
| Safe corrective direction | wait for the result and coalesce duplicate hold commands |
Adding the first participant starts an idle RTC session; later participant operations are constrained by the chosen session type. An outstanding INVITE, join, hold, or REFER operation owns part of the session state until its completion event arrives.
Evidence that separates the cause
- Code-specific proof: record pending re-
INVITECSeq, desired/current media direction, and completion callback. - Identity and target: participant URI and count.
- State at production: Call-ID/dialog identifiers.
- Timing and ordering: pending operation instance.
A safe diagnostic sequence
- Use protocol and object evidence to record pending re-
INVITECSeq, desired/current media direction, and completion callback. - Confirm the distinction that pending hold is serialized offer/answer state, not proof that the call is already on hold.
- Start a fresh operation after you wait for the result and coalesce duplicate hold commands, and compare its final state with the failing run.
How to handle the result
Resolve it at its producing layer: wait for the result and coalesce duplicate hold commands; after it, a separate UI or watchdog retry must wait until that layer reports a final state.
Example: The user presses Hold twice before the first re-INVITE completes.
Actions that do not address this condition
- Do not create a second session until the first operation outcome is reconciled.
- Do not issue overlapping topology changes from independent callbacks.
Related RTC results
RTC_E_OPERATION_WITH_TOO_MANY_PARTICIPANTS | the requested operation exceeds the participant count supported by the session type or method |
|---|---|
RTC_E_SIP_PARTY_ALREADY_IN_SESSION | the participant identity is already attached to the current RTC session |
RTC_E_SIP_CALL_CONNECTION_NOT_ESTABLISHED | the call has not reached the connected dialog/session state required by the requested operation |
Technical references
Looking for a different code? Search another status or error code.