send correct version number in PublicHeader

This commit is contained in:
Marten Seemann
2016-12-12 19:02:52 +07:00
parent a0bdf79b5b
commit 6cb48aad71
2 changed files with 15 additions and 1 deletions

View File

@@ -80,7 +80,7 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, lea
// TODO: stop sending version numbers once a version has been negotiated
if p.perspective == protocol.PerspectiveClient {
responsePublicHeader.VersionFlag = true
responsePublicHeader.VersionNumber = protocol.Version36
responsePublicHeader.VersionNumber = p.version
}
publicHeaderLength, err := responsePublicHeader.GetLength(p.perspective)

View File

@@ -166,6 +166,20 @@ var _ = Describe("Packet packer", func() {
Expect(p).ToNot(BeNil())
})
It("adds the version flag to the public header", func() {
packer.perspective = protocol.PerspectiveClient
packer.controlFrames = []frames.Frame{&frames.BlockedFrame{StreamID: 0}}
packer.connectionID = 0x1337
packer.version = 123
p, err := packer.PackPacket(nil, []frames.Frame{}, 0)
Expect(err).ToNot(HaveOccurred())
Expect(p).ToNot(BeNil())
hdr, err := ParsePublicHeader(bytes.NewReader(p.raw), protocol.PerspectiveClient)
Expect(err).ToNot(HaveOccurred())
Expect(hdr.VersionFlag).To(BeTrue())
Expect(hdr.VersionNumber).To(Equal(packer.version))
})
It("packs many control frames into 1 packets", func() {
f := &frames.AckFrame{LargestAcked: 1}
b := &bytes.Buffer{}