don't ignore queued control frames when packing a packet

This commit is contained in:
Marten Seemann
2016-05-19 13:15:47 +07:00
parent 9930de68c8
commit 52de95f21f
2 changed files with 8 additions and 1 deletions

View File

@@ -66,7 +66,7 @@ func (p *packetPacker) AddBlocked(streamID protocol.StreamID, byteOffset protoco
func (p *packetPacker) PackPacket(stopWaitingFrame *frames.StopWaitingFrame, controlFrames []frames.Frame, includeStreamFrames bool) (*packedPacket, error) {
// don't send out packets that only contain a StopWaitingFrame
if len(controlFrames) == 0 && (p.streamFrameQueue.Len() == 0 || !includeStreamFrames) {
if len(p.controlFrames) == 0 && len(controlFrames) == 0 && (p.streamFrameQueue.Len() == 0 || !includeStreamFrames) {
return nil, nil
}

View File

@@ -114,6 +114,13 @@ var _ = Describe("Packet packer", func() {
Expect(err).ToNot(HaveOccurred())
})
It("packs a packet if it has queued control frames, but no new control frames", func() {
packer.controlFrames = []frames.Frame{&frames.BlockedFrame{StreamID: 0}}
p, err := packer.PackPacket(nil, []frames.Frame{}, false)
Expect(err).ToNot(HaveOccurred())
Expect(p).ToNot(BeNil())
})
It("packs many control frames into 1 packets", func() {
f := &frames.AckFrame{LargestObserved: 1}
b := &bytes.Buffer{}