diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_types.h b/libwvdrmengine/cdm/core/include/wv_cdm_types.h index a2a4ef23..389dc2b6 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_types.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_types.h @@ -333,6 +333,7 @@ enum CdmResponseType { GET_PROVISIONING_METHOD_ERROR = 289, SESSION_NOT_FOUND_17 = 290, SESSION_NOT_FOUND_18 = 291, + /* Error code 292 can be reused as it was never present in a release */ DEVICE_CANNOT_REPROVISION = 293, SESSION_NOT_FOUND_19 = 294, }; diff --git a/libwvdrmengine/cdm/core/src/cdm_session_map.cpp b/libwvdrmengine/cdm/core/src/cdm_session_map.cpp index e94a3173..8f8b2bf0 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session_map.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session_map.cpp @@ -12,10 +12,7 @@ namespace wvcdm { CdmSessionMap::~CdmSessionMap() { - Terminate(); -} - -void CdmSessionMap::Terminate() { + AutoLock lock(lock_); for (CdmIdToSessionMap::iterator i = sessions_.begin(); i != sessions_.end(); ++i) { i->second->Close(); @@ -25,10 +22,12 @@ void CdmSessionMap::Terminate() { } void CdmSessionMap::Add(const std::string& id, CdmSession* session) { + AutoLock lock(lock_); sessions_[id].reset(session); } bool CdmSessionMap::CloseSession(const std::string& id) { + AutoLock lock(lock_); shared_ptr session; if (!FindSessionNoLock(id, &session)) { return false; @@ -39,11 +38,13 @@ bool CdmSessionMap::CloseSession(const std::string& id) { } bool CdmSessionMap::Exists(const std::string& id) { + AutoLock lock(lock_); return sessions_.find(id) != sessions_.end(); } bool CdmSessionMap::FindSession(const CdmSessionId& id, shared_ptr* session) { + AutoLock lock(lock_); return FindSessionNoLock(id, session); } @@ -60,6 +61,7 @@ bool CdmSessionMap::FindSessionNoLock(const CdmSessionId& session_id, void CdmSessionMap::GetSessionList(CdmSessionList& sessions) { sessions.clear(); + AutoLock lock(lock_); for (CdmIdToSessionMap::iterator iter = sessions_.begin(); iter != sessions_.end(); ++iter) { if (!(iter->second)->IsClosed()) { diff --git a/libwvdrmengine/cdm/core/test/test_printers.cpp b/libwvdrmengine/cdm/core/test/test_printers.cpp index 574dccf8..582e7928 100644 --- a/libwvdrmengine/cdm/core/test/test_printers.cpp +++ b/libwvdrmengine/cdm/core/test/test_printers.cpp @@ -599,10 +599,10 @@ void PrintTo(const enum CdmResponseType& value, ::std::ostream* os) { break; case SESSION_NOT_FOUND_18: *os << "SESSION_NOT_FOUND_18"; break; - case DEVICE_CANNOT_REPROVISION: *os << "DEVICE_CANNOT_REPROVISION"; - break; case SESSION_NOT_FOUND_19: *os << "SESSION_NOT_FOUND_19"; break; + case DEVICE_CANNOT_REPROVISION: *os << "DEVICE_CANNOT_REPROVISION"; + break; default: *os << "Unknown CdmResponseType"; break;