e10s http: Document channels' cache descriptor causes hang on reloads r=honza

--HG--
branch : GECKO20b5pre_20100820_RELBRANCH
This commit is contained in:
Jason Duell 2010-08-17 15:17:00 -07:00
Родитель a2ca26e719
Коммит 9a698c4b42
4 изменённых файлов: 17 добавлений и 0 удалений

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

@ -428,6 +428,7 @@ HttpChannelChild::OnStopRequest(const nsresult& statusCode)
// We need to keep the document loading channel alive for further
// communication, mainly for collecting a security state values.
mKeptAlive = true;
SendDocumentChannelCleanup();
}
}

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

@ -259,6 +259,16 @@ HttpChannelParent::RecvRedirect2Result(const nsresult& result,
return true;
}
bool
HttpChannelParent::RecvDocumentChannelCleanup()
{
// We must clear the cache entry here, else we'll block other channels from
// reading it if we've got it open for writing.
mCacheDescriptor = 0;
return true;
}
//-----------------------------------------------------------------------------
// nsIRequestObserver and nsIStreamListener methods equivalents
//-----------------------------------------------------------------------------

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

@ -109,6 +109,7 @@ protected:
const PRInt32& low,
const PRInt32& broken,
const PRInt32& no);
virtual bool RecvDocumentChannelCleanup();
virtual void ActorDestroy(ActorDestroyReason why);

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

@ -94,6 +94,11 @@ parent:
// Reports approval/veto of redirect by child process redirect observers
Redirect2Result(nsresult result, RequestHeaderTuples changedHeaders);
// For document loads we keep this protocol open after child's
// OnStopRequest, and send this msg (instead of __delete__) to allow
// partial cleanup on parent.
DocumentChannelCleanup();
child:
OnStartRequest(nsHttpResponseHead responseHead,
PRBool useResponseHead,