don't send packets containing only a StopWaitingFrame

fixes #41
This commit is contained in:
Marten Seemann
2016-05-03 14:40:45 +07:00
parent ce01b5ed30
commit a19933d51f
2 changed files with 12 additions and 0 deletions

View File

@@ -101,6 +101,11 @@ func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFra
payloadLength := 0
var payloadFrames []frames.Frame
// don't send out packets that only contain a StopWaitingFrame
if len(controlFrames) == 0 && p.streamFrameQueue.Len() == 0 {
return nil, nil
}
// TODO: handle the case where there are more controlFrames than we can put into one packet
if stopWaitingFrame != nil {
payloadFrames = append(payloadFrames, stopWaitingFrame)

View File

@@ -69,6 +69,13 @@ var _ = Describe("Packet packer", func() {
Expect(p.frames[0]).To(Equal(swf))
})
It("does not pack a packet containing only a StopWaitingFrame", func() {
swf := &frames.StopWaitingFrame{LeastUnacked: 10}
p, err := packer.PackPacket(swf, []frames.Frame{}, false)
Expect(p).To(BeNil())
Expect(err).ToNot(HaveOccurred())
})
It("packs many control frames into 1 packets", func() {
f := &frames.AckFrame{LargestObserved: 1}
b := &bytes.Buffer{}