From 147181786a8f048489dd729bd4ed5960fac1e011 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 14 Jun 2019 17:38:27 +0800 Subject: [PATCH] use a varint for the error code in the RESET_STREAM frame --- internal/wire/reset_stream_frame.go | 7 +++---- internal/wire/reset_stream_frame_test.go | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/internal/wire/reset_stream_frame.go b/internal/wire/reset_stream_frame.go index d3a40dcf9..b743e0465 100644 --- a/internal/wire/reset_stream_frame.go +++ b/internal/wire/reset_stream_frame.go @@ -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)) } diff --git a/internal/wire/reset_stream_frame_test.go b/internal/wire/reset_stream_frame_test.go index 9d28d99cb..3580e491b 100644 --- a/internal/wire/reset_stream_frame_test.go +++ b/internal/wire/reset_stream_frame_test.go @@ -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)) })