forked from quic-go/quic-go
use a varint for the error code in the RESET_STREAM frame
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user