зеркало из https://github.com/mozilla/gecko-dev.git
21723. a=chofmann, r=rpotts. AsyncOpen() in the socket transport was spinning out of control, causing socket transport thread deadlock. Now we move the socket transport off of the work queue after an AsyncOpen call
This commit is contained in:
Родитель
76b192e1f0
Коммит
85b9c156a7
|
@ -498,6 +498,11 @@ nsresult nsSocketTransport::Process(PRInt16 aSelectFlags)
|
|||
mStatus = doConnection(aSelectFlags);
|
||||
if (NS_SUCCEEDED(mStatus) && mOpenObserver) {
|
||||
mOpenObserver->OnStartRequest(this, mOpenContext);
|
||||
NS_ASSERTION(mOperation == eSocketOperation_Connect, "bad state");
|
||||
mCurrentState = gStateTable[mOperation][mCurrentState];
|
||||
mOperation = eSocketOperation_None;
|
||||
done = PR_TRUE;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1512,7 +1517,7 @@ NS_IMETHODIMP
|
|||
nsSocketTransport::AsyncOpen(nsIStreamObserver *observer, nsISupports* ctxt)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
|
||||
// Enter the socket transport lock...
|
||||
nsAutoLock aLock(mLock);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче