handle MAX_STREAM_DATA frames for the crypto stream

This commit is contained in:
Marten Seemann
2017-12-10 22:52:08 +07:00
parent ded0eb4f6f
commit 5a36a287de
2 changed files with 16 additions and 0 deletions

View File

@@ -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

View File

@@ -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)