use a varint for the error code in the RESET_STREAM frame

This commit is contained in:
Marten Seemann
2019-06-14 17:38:27 +08:00
parent 453aa23553
commit 147181786a
2 changed files with 6 additions and 7 deletions

View File

@@ -20,14 +20,13 @@ func parseResetStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*Re
}
var streamID protocol.StreamID
var errorCode uint16
var byteOffset protocol.ByteCount
sid, err := utils.ReadVarInt(r)
if err != nil {
return nil, err
}
streamID = protocol.StreamID(sid)
errorCode, err = utils.BigEndian.ReadUint16(r)
errorCode, err := utils.ReadVarInt(r)
if err != nil {
return nil, err
}
@@ -47,12 +46,12 @@ func parseResetStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*Re
func (f *ResetStreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
b.WriteByte(0x4)
utils.WriteVarInt(b, uint64(f.StreamID))
utils.BigEndian.WriteUint16(b, uint16(f.ErrorCode))
utils.WriteVarInt(b, uint64(f.ErrorCode))
utils.WriteVarInt(b, uint64(f.ByteOffset))
return nil
}
// Length of a written frame
func (f *ResetStreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount {
return 1 + utils.VarIntLen(uint64(f.StreamID)) + 2 + utils.VarIntLen(uint64(f.ByteOffset))
return 1 + utils.VarIntLen(uint64(f.StreamID)) + utils.VarIntLen(uint64(f.ErrorCode)) + utils.VarIntLen(uint64(f.ByteOffset))
}

View File

@@ -14,7 +14,7 @@ var _ = Describe("RESET_STREAM frame", func() {
It("accepts sample frame", func() {
data := []byte{0x4}
data = append(data, encodeVarInt(0xdeadbeef)...) // stream ID
data = append(data, []byte{0x13, 0x37}...) // error code
data = append(data, encodeVarInt(0x1337)...) // error code
data = append(data, encodeVarInt(0x987654321)...) // byte offset
b := bytes.NewReader(data)
frame, err := parseResetStreamFrame(b, versionIETFFrames)
@@ -27,7 +27,7 @@ var _ = Describe("RESET_STREAM frame", func() {
It("errors on EOFs", func() {
data := []byte{0x4}
data = append(data, encodeVarInt(0xdeadbeef)...) // stream ID
data = append(data, []byte{0x13, 0x37}...) // error code
data = append(data, encodeVarInt(0x1337)...) // error code
data = append(data, encodeVarInt(0x987654321)...) // byte offset
_, err := parseResetStreamFrame(bytes.NewReader(data), versionIETFFrames)
Expect(err).NotTo(HaveOccurred())
@@ -50,7 +50,7 @@ var _ = Describe("RESET_STREAM frame", func() {
Expect(err).ToNot(HaveOccurred())
expected := []byte{0x4}
expected = append(expected, encodeVarInt(0x1337)...)
expected = append(expected, []byte{0xca, 0xfe}...)
expected = append(expected, encodeVarInt(0xcafe)...)
expected = append(expected, encodeVarInt(0x11223344decafbad)...)
Expect(b.Bytes()).To(Equal(expected))
})