STATUS popGeneratedCert()

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;
}