void HttpChannelChild::OnStopRequest(const nsresult& statusCode) { LOG(("HttpChannelChild::OnStopRequest [this=%x status=%u]\n", this, statusCode)); mIsPending = false; if (!mCanceled && NS_SUCCEEDED(mStatus)) mStatus = statusCode; { // We must flush the queue before we Send__delete__ // (although we really shouldn't receive any msgs after OnStop), // so make sure this goes out of scope before then. AutoEventEnqueuer ensureSerialDispatch(mEventQ); mListener->OnStopRequest(this, mListenerContext, mStatus); mListener = 0; mListenerContext = 0; mCacheEntryAvailable = false; if (mLoadGroup) mLoadGroup->RemoveRequest(this, nsnull, mStatus); } if (mLoadFlags & LOAD_DOCUMENT_URI) { // Keep IPDL channel open, but only for updating security info. mKeptAlive = true; SendDocumentChannelCleanup(); } else { // This calls NeckoChild::DeallocPHttpChannel(), which deletes |this| if IPDL // holds the last reference. Don't rely on |this| existing after here. PHttpChannelChild::Send__delete__(this); } }
void HttpChannelChild::OnStopRequest(const nsresult& statusCode) { LOG(("HttpChannelChild::OnStopRequest [this=%x status=%u]\n", this, statusCode)); mIsPending = PR_FALSE; if (!mCanceled) mStatus = statusCode; { // We must flush the queue before we Send__delete__ // (although we really shouldn't receive any msgs after OnStop), // so make sure this goes out of scope before then. AutoEventEnqueuer ensureSerialDispatch(this); mListener->OnStopRequest(this, mListenerContext, statusCode); mListener = 0; mListenerContext = 0; mCacheEntryAvailable = PR_FALSE; if (mLoadGroup) mLoadGroup->RemoveRequest(this, nsnull, statusCode); } if (!(mLoadFlags & LOAD_DOCUMENT_URI)) { // This calls NeckoChild::DeallocPHttpChannel(), which deletes |this| if IPDL // holds the last reference. Don't rely on |this| existing after here. PHttpChannelChild::Send__delete__(this); } else { // We need to keep the document loading channel alive for further // communication, mainly for collecting a security state values. mKeptAlive = true; SendDocumentChannelCleanup(); } }