зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
f35b32ce84
Коммит
2864c81290
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче