From 5a36a287de9c5aa4eb0668b9f5e9a3f2ca3b02b1 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 10 Dec 2017 22:52:08 +0700 Subject: [PATCH] handle MAX_STREAM_DATA frames for the crypto stream --- session.go | 4 ++++ session_test.go | 12 ++++++++++++ 2 files changed, 16 insertions(+) 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)