Bug 345398 make the socket input stream call asyncWait's callback even if it

is already closed r=darin sr=bz
This commit is contained in:
cbiesinger%web.de 2006-07-26 00:12:39 +00:00
Родитель f35b32ce84
Коммит 2864c81290
1 изменённых файлов: 13 добавлений и 2 удалений

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

@ -404,6 +404,10 @@ nsSocketInputStream::AsyncWait(nsIInputStreamCallback *callback,
{
LOG(("nsSocketInputStream::AsyncWait [this=%x]\n", this));
// This variable will be non-null when we want to call the callback
// directly from this function, but outside the lock.
// (different from callback when target is not null)
nsCOMPtr<nsIInputStreamCallback> directCallback;
{
nsAutoLock lock(mTransport->mLock);
@ -423,9 +427,16 @@ nsSocketInputStream::AsyncWait(nsIInputStreamCallback *callback,
else
mCallback = callback;
mCallbackFlags = flags;
if (NS_FAILED(mCondition))
directCallback.swap(mCallback);
else
mCallbackFlags = flags;
}
mTransport->OnInputPending();
if (directCallback)
directCallback->OnInputStreamReady(this);
else
mTransport->OnInputPending();
return NS_OK;
}