diff --git a/libwvdrmengine/cdm/core/include/cdm_session.h b/libwvdrmengine/cdm/core/include/cdm_session.h index 9bfa638d..04e7ef74 100644 --- a/libwvdrmengine/cdm/core/include/cdm_session.h +++ b/libwvdrmengine/cdm/core/include/cdm_session.h @@ -60,7 +60,7 @@ class CdmSession { WvCdmEventListener* event_listener); virtual CdmResponseType RestoreOfflineSession( - const CdmKeySetId& key_set_id, const CdmLicenseType license_type); + const CdmKeySetId& key_set_id, CdmLicenseType license_type); virtual CdmResponseType RestoreUsageSession( const DeviceFiles::CdmUsageData& usage_data); diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 16873e41..21fef480 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -186,7 +186,7 @@ CdmResponseType CdmSession::Init(CdmClientPropertySet* cdm_client_property_set, } CdmResponseType CdmSession::RestoreOfflineSession( - const CdmKeySetId& key_set_id, const CdmLicenseType license_type) { + const CdmKeySetId& key_set_id, CdmLicenseType license_type) { if (!initialized_) { LOGE("CdmSession::RestoreOfflineSession: not initialized"); return NOT_INITIALIZED_ERROR; @@ -214,7 +214,14 @@ CdmResponseType CdmSession::RestoreOfflineSession( return GET_LICENSE_ERROR; } - // Do not restore a released offline license, unless a release retry + // Attempts to restore a released offline license are treated as a release + // retry. + if (license_state == DeviceFiles::kLicenseStateReleasing) { + license_type = kLicenseTypeRelease; + } + + // Only restore offline licenses if they are active or this is a release + // retry. if (!(license_type == kLicenseTypeRelease || license_state == DeviceFiles::kLicenseStateActive)) { LOGE(