diff --git a/session.go b/session.go index 467c992e..16e89e4b 100644 --- a/session.go +++ b/session.go @@ -582,6 +582,10 @@ func (s *session) handleMaxDataFrame(frame *wire.MaxDataFrame) { } func (s *session) handleMaxStreamDataFrame(frame *wire.MaxStreamDataFrame) error { + if frame.StreamID == s.version.CryptoStreamID() { + s.cryptoStream.UpdateSendWindow(frame.ByteOffset) + return nil + } str, err := s.streamsMap.GetOrOpenStream(frame.StreamID) if err != nil { return err diff --git a/session_test.go b/session_test.go index 52c9ad9c..c588b4f7 100644 --- a/session_test.go +++ b/session_test.go @@ -393,6 +393,18 @@ var _ = Describe("Session", func() { sess.connFlowController = connFC }) + It("updates the flow control window of the crypto stream", func() { + fc := mocks.NewMockStreamFlowController(mockCtrl) + offset := protocol.ByteCount(0x4321) + fc.EXPECT().UpdateSendWindow(offset) + sess.cryptoStream.(*stream).flowController = fc + err := sess.handleMaxStreamDataFrame(&wire.MaxStreamDataFrame{ + StreamID: sess.version.CryptoStreamID(), + ByteOffset: offset, + }) + Expect(err).ToNot(HaveOccurred()) + }) + It("updates the flow control window of a stream", func() { offset := protocol.ByteCount(0x1234) str, err := sess.GetOrOpenStream(5)