forked from quic-go/quic-go
don't ignore queued control frames when packing a packet
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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{}
|
||||
|
||||
Reference in New Issue
Block a user