diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index 6ebc2664..86f6721a 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -852,7 +852,22 @@ void CryptoSession::Close() { WithOecWriteLock( "Close", [&] { close_sts = OEMCrypto_CloseSession(oec_session_id_); }); metrics_->oemcrypto_close_session_.Increment(close_sts); - if (OEMCrypto_SUCCESS == close_sts) open_ = false; + + if (close_sts != OEMCrypto_SUCCESS) { + LOGW("OEMCrypto_CloseSession failed: status = %d", + static_cast(close_sts)); + } + switch (close_sts) { + case OEMCrypto_SUCCESS: + case OEMCrypto_ERROR_INVALID_SESSION: + case OEMCrypto_ERROR_SYSTEM_INVALIDATED: + open_ = false; + break; + case OEMCrypto_ERROR_CLOSE_SESSION_FAILED: + default: + // empty case + break; + } } CdmResponseType CryptoSession::PrepareAndSignLicenseRequest(