예제 #1
0
DWORD
VmDirSchemaModMutexRelease(
    PVDIR_OPERATION pOperation
    )
{
    DWORD   dwError = 0;

    if (!pOperation)
    {
        dwError = ERROR_INVALID_PARAMETER;
        BAIL_ON_VMDIR_ERROR(dwError);
    }

    if (pOperation->dwSchemaWriteOp > 0)
    {
        pOperation->dwSchemaWriteOp--;
        if (pOperation->dwSchemaWriteOp == 0)
        {
            dwError = VmDirUnLockMutex(gVdirSchemaGlobals.cacheModMutex);
            BAIL_ON_VMDIR_ERROR(dwError);
        }
    }

error:
    return dwError;
}
예제 #2
0
static
int
_VmDirSASLMutexUnlock(
    PVOID   pSASLMutex
    )
{
    DWORD           dwError = SASL_OK;
    PVMDIR_MUTEX    pLocalMutex = (PVMDIR_MUTEX) pSASLMutex;

    dwError = VmDirUnLockMutex(pLocalMutex);
    BAIL_ON_VMDIR_ERROR(dwError);

cleanup:

    return (int)dwError;

error:

    VMDIR_LOG_ERROR( VMDIR_LOG_MASK_ALL, "_VmDirSASLMutexUnlock failed (%d)", dwError);
    dwError = SASL_FAIL;

    goto cleanup;
}