Bug 1174899 - discarded spdy data with fin attributed to wrong stream r=bagder
authorPatrick McManus <mcmanus@ducksong.com>
Sun, 22 Nov 2015 16:23:18 -0500
changeset 273840 4ec0c590ef66
parent 273839 29bb91687133
child 273841 599f81b28729
push id29715
push userkwierso@gmail.com
push date2015-11-24 21:54 +0000
treeherdermozilla-central@d9243e369c22 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbagder
bugs1174899
milestone45.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1174899 - discarded spdy data with fin attributed to wrong stream r=bagder
netwerk/protocol/http/Http2Session.cpp
netwerk/protocol/http/SpdySession31.cpp
--- a/netwerk/protocol/http/Http2Session.cpp
+++ b/netwerk/protocol/http/Http2Session.cpp
@@ -589,16 +589,17 @@ Http2Session::ResetDownstreamState()
   ChangeDownstreamState(BUFFERING_FRAME_HEADER);
 
   if (mInputFrameFinal && mInputFrameDataStream) {
     mInputFrameFinal = false;
     LOG3(("  SetRecvdFin id=0x%x\n", mInputFrameDataStream->StreamID()));
     mInputFrameDataStream->SetRecvdFin(true);
     MaybeDecrementConcurrent(mInputFrameDataStream);
   }
+  mInputFrameFinal = false;
   mInputFrameBufferUsed = 0;
   mInputFrameDataStream = nullptr;
 }
 
 // return true if activated (and counted against max)
 // otherwise return false and queue
 bool
 Http2Session::TryToActivate(Http2Stream *aStream)
--- a/netwerk/protocol/http/SpdySession31.cpp
+++ b/netwerk/protocol/http/SpdySession31.cpp
@@ -544,16 +544,17 @@ SpdySession31::ResetDownstreamState()
   if (mInputFrameDataLast && mInputFrameDataStream) {
     mInputFrameDataLast = false;
     if (!mInputFrameDataStream->RecvdFin()) {
       LOG3(("  SetRecvdFin id=0x%x\n", mInputFrameDataStream->StreamID()));
       mInputFrameDataStream->SetRecvdFin(true);
       DecrementConcurrent(mInputFrameDataStream);
     }
   }
+  mInputFrameDataLast = false;
   mInputFrameBufferUsed = 0;
   mInputFrameDataStream = nullptr;
 }
 
 // return true if activated (and counted against max)
 // otherwise return false and queue
 bool
 SpdySession31::TryToActivate(SpdyStream31 *aStream)