change the type byte of the IETF ACK frame from 0x0e to 0x0d

This commit is contained in:
Marten Seemann
2018-04-22 18:05:43 +09:00
parent c1d8c8940e
commit cd359ec5e0
4 changed files with 25 additions and 10 deletions

View File

@@ -102,7 +102,7 @@ func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
largestAcked := f.AckRanges[0].Largest
lowestInFirstRange := f.AckRanges[0].Smallest
b.WriteByte(0xe)
b.WriteByte(0x0d)
utils.WriteVarInt(b, uint64(largestAcked))
utils.WriteVarInt(b, encodeAckDelay(f.DelayTime))

View File

@@ -13,7 +13,7 @@ import (
var _ = Describe("ACK Frame (for IETF QUIC)", func() {
Context("parsing", func() {
It("parses an ACK frame without any ranges", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(100)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(0)...) // num blocks
@@ -28,7 +28,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("parses an ACK frame that only acks a single packet", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(55)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(0)...) // num blocks
@@ -43,7 +43,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("accepts an ACK frame that acks all packets from 0 to largest", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(20)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(0)...) // num blocks
@@ -58,7 +58,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("rejects an ACK frame that has a first ACK block which is larger than LargestAcked", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(20)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(0)...) // num blocks
@@ -69,7 +69,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("parses an ACK frame that has a single block", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(1000)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(1)...) // num blocks
@@ -90,7 +90,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("parses an ACK frame that has a multiple blocks", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(100)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(2)...) // num blocks
@@ -114,7 +114,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
It("errors on EOF", func() {
data := []byte{0xe}
data := []byte{0xd}
data = append(data, encodeVarInt(1000)...) // largest acked
data = append(data, encodeVarInt(0)...) // delay
data = append(data, encodeVarInt(1)...) // num blocks
@@ -131,6 +131,21 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
})
Context("when writing", func() {
It("writes a simple frame", func() {
buf := &bytes.Buffer{}
f := &AckFrame{
AckRanges: []AckRange{{Smallest: 100, Largest: 1337}},
}
err := f.Write(buf, versionIETFFrames)
Expect(err).ToNot(HaveOccurred())
expected := []byte{0xd}
expected = append(expected, encodeVarInt(1337)...) // largest acked
expected = append(expected, 0) // delay
expected = append(expected, encodeVarInt(0)...) // num ranges
expected = append(expected, encodeVarInt(1337-100)...)
Expect(buf.Bytes()).To(Equal(expected))
})
It("writes a frame that acks a single packet", func() {
buf := &bytes.Buffer{}
f := &AckFrame{

View File

@@ -85,7 +85,7 @@ func parseIETFFrame(r *bytes.Reader, typeByte byte, v protocol.VersionNumber) (F
if err != nil {
err = qerr.Error(qerr.InvalidFrameData, err.Error())
}
case 0xe:
case 0xd:
frame, err = parseAckFrame(r, v)
if err != nil {
err = qerr.Error(qerr.InvalidAckData, err.Error())

View File

@@ -305,7 +305,7 @@ var _ = Describe("Frame parsing", func() {
0x09: qerr.InvalidBlockedData,
0x0a: qerr.InvalidFrameData,
0x0c: qerr.InvalidFrameData,
0x0e: qerr.InvalidAckData,
0x0d: qerr.InvalidAckData,
0x10: qerr.InvalidStreamData,
} {
_, err := ParseNextFrame(bytes.NewReader([]byte{b}), nil, versionIETFFrames)