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:
valeski%netscape.com 1999-12-15 00:28:39 +00:00
Родитель 3d22ed7e09
Коммит b2a9280e75
1 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -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);