bug 706236 spdy deadlock on TCP rst during frame body buffering r=honzab

This commit is contained in:
Patrick McManus 2011-12-06 09:43:08 -05:00
Родитель c17f88643d
Коммит c114af5c0d
1 изменённых файлов: 14 добавлений и 6 удалений

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

@ -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);
@ -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,7 +1482,9 @@ 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
if (rv == NS_BASE_STREAM_WOULD_BLOCK)
ResumeRecv(nsnull);
return rv;
}
@ -1502,7 +1507,10 @@ 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
if (rv == NS_BASE_STREAM_WOULD_BLOCK)
ResumeRecv(nsnull);
return rv;
}