- if (!mActive)
- {
- assert(mDbInfo == nil);
- mHandle.DLHandle = dl()->handle();
- check(CSSM_DL_DbOpen(mHandle.DLHandle, mDbName.canonicalName(), dbLocation(),
- mAccessRequest, mAccessCredentials,
- mOpenParameters, &mHandle.DBHandle));
- mActive = true;
-
- if (!mAccessCredentials && mDefaultCredentials)
- if (const AccessCredentials *creds = mDefaultCredentials->makeCredentials())
- CSSM_DL_Authenticate(handle(), mAccessRequest, creds); // ignore error
+ {
+ StLock<Mutex> _(mActivateMutex);
+ if (!mActive)
+ {
+ assert(mDbInfo == nil);
+ mHandle.DLHandle = dl()->handle();
+ check(CSSM_DL_DbOpen(mHandle.DLHandle, mDbName.canonicalName(), dbLocation(),
+ mAccessRequest, mAccessCredentials,
+ mOpenParameters, &mHandle.DBHandle));
+
+ mActive = true;
+ }