in main/AppCredential.c [121:155]
STATUS popGeneratedCert(PAppCredential pAppCredential, PRtcCertificate* ppRtcCertificate)
{
STATUS retStatus = STATUS_SUCCESS;
BOOL locked = FALSE;
UINT64 data;
PRtcCertificate pRtcCertificate = NULL;
CHK((pAppCredential != NULL) && (ppRtcCertificate != NULL), STATUS_APP_CREDENTIAL_NULL_ARG);
*ppRtcCertificate = NULL;
MUTEX_LOCK(pAppCredential->generateCertLock);
locked = TRUE;
// Check if we have any pregenerated certs and use them
// NOTE: We are running under the config lock
retStatus = stackQueueDequeue(pAppCredential->generatedCertificates, &data);
CHK(retStatus == STATUS_SUCCESS || retStatus == STATUS_NOT_FOUND, retStatus);
if (retStatus == STATUS_NOT_FOUND) {
retStatus = STATUS_SUCCESS;
} else {
// Use the pre-generated cert and get rid of it to not reuse again
pRtcCertificate = (PRtcCertificate) data;
}
*ppRtcCertificate = pRtcCertificate;
MUTEX_UNLOCK(pAppCredential->generateCertLock);
locked = FALSE;
CleanUp:
if (locked) {
MUTEX_UNLOCK(pAppCredential->generateCertLock);
}
return retStatus;
}