Skip to content
This repository has been archived by the owner on Apr 10, 2024. It is now read-only.

Commit

Permalink
Bug 708813 - LDAP connection broken (application deadlocks) starting …
Browse files Browse the repository at this point in the history
…with version 9. r=honza,a=Standard8 for checkin to Thunderbird/SeaMonkey specific relbranch

--HG--
branch : COMM100_2012012414_RELBRANCH
  • Loading branch information
Brian Smith committed Jan 24, 2012
1 parent 101ef76 commit 8665353
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 17 deletions.
18 changes: 11 additions & 7 deletions security/manager/ssl/src/PSMRunnable.cpp
Expand Up @@ -46,14 +46,18 @@ SyncRunnableBase::SyncRunnableBase()
nsresult
SyncRunnableBase::DispatchToMainThreadAndWait()
{
NS_ASSERTION(!NS_IsMainThread(),
"DispatchToMainThreadAndWait called on the main thread.");

mozilla::MonitorAutoLock lock(monitor);
nsresult rv = NS_DispatchToMainThread(this);
if (NS_SUCCEEDED(rv)) {
lock.Wait();
nsresult rv;
if (NS_IsMainThread()) {
RunOnTargetThread();
rv = NS_OK;
} else {
mozilla::MonitorAutoLock lock(monitor);
rv = NS_DispatchToMainThread(this);
if (NS_SUCCEEDED(rv)) {
lock.Wait();
}
}

return rv;
}

Expand Down
6 changes: 1 addition & 5 deletions security/manager/ssl/src/nsNSSCallbacks.cpp
Expand Up @@ -825,11 +825,7 @@ PK11PasswordPrompt(PK11SlotInfo* slot, PRBool retry, void* arg)
nsRefPtr<PK11PasswordPromptRunnable> runnable =
new PK11PasswordPromptRunnable(slot,
static_cast<nsIInterfaceRequestor*>(arg));
if (NS_IsMainThread()) {
runnable->RunOnTargetThread();
} else {
runnable->DispatchToMainThreadAndWait();
}
runnable->DispatchToMainThreadAndWait();
return runnable->mResult;
}

Expand Down
5 changes: 0 additions & 5 deletions security/manager/ssl/src/nsNSSIOLayer.cpp
Expand Up @@ -827,11 +827,6 @@ void nsNSSSocketInfo::GetPreviousCert(nsIX509Cert** _result)
NS_ASSERTION(_result, "_result parameter to GetPreviousCert is null");
*_result = nsnull;

if (NS_IsMainThread()) {
NS_ERROR("nsNSSSocketInfo::GetPreviousCert called on the main thread");
return;
}

nsRefPtr<PreviousCertRunnable> runnable = new PreviousCertRunnable(mCallbacks);
nsresult rv = runnable->DispatchToMainThreadAndWait();
NS_ASSERTION(NS_SUCCEEDED(rv), "runnable->DispatchToMainThreadAndWait() failed");
Expand Down

0 comments on commit 8665353

Please sign in to comment.