diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index 7fc2233c..9442a5b7 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -3135,6 +3135,12 @@ CdmResponseType CryptoSession::LoadOtaProvisioning( WithOecWriteLock("LoadOtaProvisioning", [&] { needs_keybox_provisioning_ = false; }); } + CdmResponseType result = GetSystemIdInternal(&system_id_); + if (result == NO_ERROR) { + LOGD("New system id is %d", system_id_); + } else { + LOGE("Failed to fetch system ID"); + } return MapOEMCryptoResult(status, UNKNOWN_ERROR, "LoadOtaProvisioning"); } diff --git a/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp b/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp index af5e367e..d31d8a43 100644 --- a/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp +++ b/libwvdrmengine/cdm/core/src/ota_keybox_provisioner.cpp @@ -97,6 +97,12 @@ OtaKeyboxProvisioner::OtaKeyboxProvisioner( } OtaKeyboxProvisioner::~OtaKeyboxProvisioner() { + // If we sent a request, and did not get a response, and we still need to + // provision, then there was an error and we should trigger fallback. + if (request_generated_ && (!response_received_) && (!IsProvisioned())) { + LOGE("OTA Provisioning not processed. Falling back to L3"); + fallback_policy_->TriggerFallback(); + } crypto_session_.reset(); fallback_policy_ = nullptr; }