Fix ScopedTestNSSDB for older NSS versions.
Before, if NSS version was < 3.15.1, then the ScopedTempDir was destructed without ScopedAllowIO and lead to a thread restriction violation. Now, the temp dir is not deleted in this case as the NSS DB is left open. BUG=210525 TBR=rsleevi@chromium.org Review URL: https://codereview.chromium.org/423363005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287257 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@ -29,17 +29,22 @@ ScopedTestNSSDB::~ScopedTestNSSDB() {
|
||||
// Don't close when NSS is < 3.15.1, because it would require an additional
|
||||
// sleep for 1 second after closing the database, due to
|
||||
// http://bugzil.la/875601.
|
||||
if (!NSS_VersionCheck("3.15.1") || !slot_)
|
||||
if (!NSS_VersionCheck("3.15.1")) {
|
||||
LOG(ERROR) << "NSS version is < 3.15.1, test DB will not be closed.";
|
||||
temp_dir_.Take();
|
||||
return;
|
||||
}
|
||||
|
||||
// NSS is allowed to do IO on the current thread since dispatching
|
||||
// to a dedicated thread would still have the affect of blocking
|
||||
// the current thread, due to NSS's internal locking requirements
|
||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
||||
|
||||
SECStatus status = SECMOD_CloseUserDB(slot_.get());
|
||||
if (status != SECSuccess)
|
||||
PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError();
|
||||
if (slot_) {
|
||||
SECStatus status = SECMOD_CloseUserDB(slot_.get());
|
||||
if (status != SECSuccess)
|
||||
PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError();
|
||||
}
|
||||
|
||||
if (!temp_dir_.Delete())
|
||||
LOG(ERROR) << "Could not delete temporary directory.";
|
||||
|
Reference in New Issue
Block a user