зеркало из https://github.com/mozilla/gecko-dev.git
bug 706236 spdy deadlock on TCP rst during frame body buffering r=honzab
This commit is contained in:
Родитель
c17f88643d
Коммит
c114af5c0d
|
@ -128,7 +128,8 @@ SpdySession::Shutdown(nsAHttpTransaction *key,
|
|||
|
||||
SpdySession::~SpdySession()
|
||||
{
|
||||
LOG3(("SpdySession::~SpdySession %p", this));
|
||||
LOG3(("SpdySession::~SpdySession %p mDownstreamState=%X",
|
||||
this, mDownstreamState));
|
||||
|
||||
inflateEnd(&mDownstreamZlib);
|
||||
deflateEnd(&mUpstreamZlib);
|
||||
|
@ -271,7 +272,7 @@ SpdySession::ActivateStream(SpdyStream *stream)
|
|||
mConcurrent++;
|
||||
if (mConcurrent > mConcurrentHighWater)
|
||||
mConcurrentHighWater = mConcurrent;
|
||||
LOG3(("SpdySession::AddStream %p activating stream %p Currently %d"
|
||||
LOG3(("SpdySession::AddStream %p activating stream %p Currently %d "
|
||||
"streams in session, high water mark is %d",
|
||||
this, stream, mConcurrent, mConcurrentHighWater));
|
||||
|
||||
|
@ -1336,9 +1337,11 @@ SpdySession::WriteSegments(nsAHttpSegmentWriter *writer,
|
|||
8 - mFrameBufferUsed,
|
||||
countWritten);
|
||||
if (NS_FAILED(rv)) {
|
||||
if (rv == NS_BASE_STREAM_WOULD_BLOCK) {
|
||||
LOG3(("SpdySession %p buffering frame header read failure %x\n",
|
||||
this, rv));
|
||||
// maybe just blocked reading from network
|
||||
if (rv == NS_BASE_STREAM_WOULD_BLOCK)
|
||||
ResumeRecv(nsnull);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -1479,8 +1482,10 @@ SpdySession::WriteSegments(nsAHttpSegmentWriter *writer,
|
|||
rv = writer->OnWriteSegment(trash, count, countWritten);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG3(("SpdySession %p discard frame read failure %x\n", this, rv));
|
||||
// maybe just blocked reading from network
|
||||
ResumeRecv(nsnull);
|
||||
if (rv == NS_BASE_STREAM_WOULD_BLOCK)
|
||||
ResumeRecv(nsnull);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -1502,8 +1507,11 @@ SpdySession::WriteSegments(nsAHttpSegmentWriter *writer,
|
|||
mFrameDataSize - mFrameDataRead,
|
||||
countWritten);
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG3(("SpdySession %p buffering control frame read failure %x\n",
|
||||
this, rv));
|
||||
// maybe just blocked reading from network
|
||||
ResumeRecv(nsnull);
|
||||
if (rv == NS_BASE_STREAM_WOULD_BLOCK)
|
||||
ResumeRecv(nsnull);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче