| Previous | Next |
| RTC_E_PORT_MANAGER_ALREADY_SET | RTC_E_UDP_NOT_SUPPORTED |
RTC_E_SECURITY_LEVEL_ALREADY_SET
Operational meaning: RTC_E_SECURITY_LEVEL_ALREADY_SET
This result is useful only when preserved with its producing phase; in applying client policy, authorized domains, transport requirements, and negotiated media security levels, it denotes the media security level has already been fixed for this media type and cannot be changed in the current session state.
The machine-readable identity of this result is 0x80EE007D in the RTC interface facility 0xEE; the result identity matters because RTC uses separate facilities for API conditions, SIP final responses, and PINT service statuses.
The first useful check for this HRESULT is to record media type, original level setter, negotiation state, and requested replacement; The result must be separated from nearby conditions because immutability after setting differs from incompatibility with a peer.
Signals worth preserving
Correlate this result at source: the method or callback, the owning object generation, and the active protocol transition; for this HRESULT, this keeps later retries from obscuring causality.
- Code-specific proof for this HRESULT: record media type, original level setter, negotiation state, and requested replacement.
- Correlation key for this HRESULT: profile/server domain.
- Protocol or object snapshot for this HRESULT: requested media security level.
- Last completed transition for this HRESULT: peer capability result.
- Expected output for this HRESULT: transport selected for signaling.
For privacy-safe analysis of this result, preserve protocol structure rather than payload content; for this HRESULT, authentication values, complete addresses, buddy lists, and bodies should be redacted or hashed under policy.
Protocol and object boundary
| RTC area | RTC policy and media-security boundary |
|---|---|
| Condition to prove | the media security level has already been fixed for this media type and cannot be changed in the current session state |
| Objects to correlate | enabled profile, policy source, authorized domain, media type, local and remote security level |
| Safe corrective direction | choose the level before negotiation or establish a new session under a different explicit policy |
The surrounding protocol rule for this HRESULT is that Policy refusal is distinct from transport failure: the requested operation may be technically possible but prohibited for the current profile or platform; in addition, the path requires that Media security must be compatible for each participating endpoint and should not be silently downgraded after negotiation begins.
Verification workflow
- Record it and
0x80EE007Dat the first RTC method or event that returns it. - Identify the client, profile, session, participant, presence object, terminal, or port manager that owns this it occurrence.
- Place it in its exact phase: parsing, discovery, transport, authentication, profile validation, dialog control, media, roaming, registration, redirection, or final response handling.
- prove the condition by ensuring the trace can record media type, original level setter, negotiation state, and requested replacement.
- Apply one controlled change for this HRESULT: choose the level before negotiation or establish a new session under a different explicit policy; then verify the result return value and resulting RTC state.
Correlate wire data and RTC events for this HRESULT; for this HRESULT, either source alone can misclassify local validation as remote rejection, or a remote status as a local media or profile failure.
Do not confuse it with
The practical separator for this HRESULT is this: it is tied to the condition “the media security level has already been fixed for this media type and cannot be changed in the current session state”; preserve that producing boundary before choosing recovery; for this HRESULT, compare that boundary with these related RTC values.
RTC_E_SECURITY_LEVEL_NOT_DEFINED | the application has not defined the media security level required for the operation |
|---|---|
RTC_E_UDP_NOT_SUPPORTED | the requested feature or profile combination is incompatible with at least one server using UDP transport |
RTC_E_POLICY_NOT_ALLOW | effective RTC policy explicitly prohibits the requested action |
Facility equality is not semantic equality; route each contrasted value through its own recovery branch.
Recovery and control flow
The corrective direction for this HRESULT is to choose the level before negotiation or establish a new session under a different explicit policy; for this HRESULT, cancellation, cleanup, and retry should remain with the component that owns the failed transition.
Distinguish local rejection from an operation that may already have reached the server; for this HRESULT, use transaction identifiers and final events before replaying any non-idempotent action.
Example for this HRESULT: A late plugin tries to raise audio security after the offer has already been built.
Actions that do not address this condition
- An investigation should not do not bypass policy by editing generated profile XML in memory.
- also do not downgrade security without an explicit product policy and user-visible result.
- A wrapper handling it should retain the original HRESULT instead of replacing it with an undifferentiated call failure.
Verification after a fix
A useful it regression does more than expect an exception; the result test constructs “the media security level has already been fixed for this media type and cannot be changed in the current session state”, checks the exact HRESULT at the producing RTC boundary, and verifies state ownership before and after the targeted correction.
Technical references
- Microsoft RTC return constants — authoritative context for the boundary.
- IRTCClientProvisioning::CreateProfile — definitions relevant when reproducing it.
- SIP security considerations — API or protocol rules used to interpret it.
Looking for a different code? Search another status or error code.