Skip to content

RDKEMW-26495: Linear Channel Playback Failure After Standby/reboot - railto Decryption Errors Observed - #296

Open
nejuma1 wants to merge 3 commits into
support/0.2.0-8.6_VIPAfrom
feature/RDKEMW-23221_1
Open

nejuma1 wants to merge 3 commits into
support/0.2.0-8.6_VIPAfrom
feature/RDKEMW-23221_1

Conversation

@nejuma1

@nejuma1 nejuma1 commented Oct 12, 2026

Copy link
Copy Markdown
Contributor

RDKEMW-26495: Linear Channel Playback Failure After Standby/reboot - railto Decryption Errors Observed

Reason for change : Handle rialto session termination gracefully and re initialise DRM
Priority : P1
Test steps: kill -11 should not cause techfault
Risks: Low
Signed-off-by : Nejuma T N nejumatn28@gmail.com

…railto Decryption Errors Observed

Reason for change : Expose rialto server failures to application
Priority : P1
Test steps: Mentioned in ticket
Signed off by : nejumatn28@gmail.com
…railto Decryption Errors Observed

Reason for change : In case of rialtoserver failure, ocdm session is
reinitialized
Priority : P1
Test steps: Mentioned in ticket
Signed off by : nejumatn28@gmail.com
…railto Decryption Errors Observed

Reason for change : rebuild DRM session immediately on error state instead of latching failure Priority : P1
Test steps: Mentioned in ticket
Signed off by : nejumatn28@gmail.com
Copilot AI balanced review requested due to automatic review settings October 12, 2026 07:49
@nejuma1
nejuma1 requested a review from a team as a code owner October 12, 2026 07:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Failed-key caching can bypass recovery, while asynchronous state updates introduce data races.

5 open findings
What changed in this PR

Adds DRM recovery after Rialto/OpenCDM session termination.

Changes:

  • Tracks and rebuilds invalidated OpenCDM sessions.
  • Propagates OpenCDM errors through DRM callbacks.
  • Avoids reusing invalidated cached sessions.
File Description
drm/​ocdm/​opencdmsessionadapter.h Adds invalidation state and reinitialization support.
drm/​ocdm/​opencdmsessionadapter.cpp Handles OpenCDM errors and resets sessions.
drm/​DrmSessionManager.cpp Rebuilds invalidated cached sessions.
drm/​DrmSession.h Adds the session invalidation API.
drm/​DrmCallbacks.h Adds error notification callback.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +179 to +181
userSession->m_keyStatus = InternalError;
userSession->m_eKeyState = KEY_ERROR;
userSession->m_sessionReinitializationRequired.store(true);
Comment thread drm/DrmSessionManager.cpp
}

if (isKeyIdFound)
if (isKeyIdFound && !drmSessionContexts[sessionSlot].drmSession->IsInvalidated())
Comment on lines +119 to +124
m_challenge.clear();
m_destUrl.clear();
m_keyStored.clear();
m_keyStateIndeterminate = false;
m_keyStatus = InternalError;
m_eKeyState = KEY_INIT;

DrmHelperPtr m_drmHelper;
DrmCallbacks *m_drmCallbacks;
std::atomic<bool> m_sessionReinitializationRequired;
@@ -145,6 +169,23 @@ void OCDMSessionAdapter::generateDRMSession(const uint8_t *f_pbInitData,
};

m_OCDMSessionCallbacks.error_message_callback = [](OpenCDMSession* session, void* userData, const char message[]) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants