mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-04 04:37:36 +03:00
rename frame.Write to frame.Append
This commit is contained in:
parent
3ca1001951
commit
ab6d664b43
50 changed files with 112 additions and 112 deletions
|
@ -561,7 +561,7 @@ var _ = Describe("Connection", func() {
|
||||||
}
|
}
|
||||||
Expect(hdr.Write(buf, conn.version)).To(Succeed())
|
Expect(hdr.Write(buf, conn.version)).To(Succeed())
|
||||||
unpacker.EXPECT().Unpack(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(*wire.Header, time.Time, []byte) (*unpackedPacket, error) {
|
unpacker.EXPECT().Unpack(gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(*wire.Header, time.Time, []byte) (*unpackedPacket, error) {
|
||||||
b, err := (&wire.ConnectionCloseFrame{ErrorCode: uint64(qerr.StreamLimitError)}).Write(nil, conn.version)
|
b, err := (&wire.ConnectionCloseFrame{ErrorCode: uint64(qerr.StreamLimitError)}).Append(nil, conn.version)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
return &unpackedPacket{
|
return &unpackedPacket{
|
||||||
hdr: hdr,
|
hdr: hdr,
|
||||||
|
@ -754,7 +754,7 @@ var _ = Describe("Connection", func() {
|
||||||
PacketNumberLen: protocol.PacketNumberLen1,
|
PacketNumberLen: protocol.PacketNumberLen1,
|
||||||
}
|
}
|
||||||
rcvTime := time.Now().Add(-10 * time.Second)
|
rcvTime := time.Now().Add(-10 * time.Second)
|
||||||
b, err := (&wire.PingFrame{}).Write(nil, conn.version)
|
b, err := (&wire.PingFrame{}).Append(nil, conn.version)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
packet := getPacket(hdr, nil)
|
packet := getPacket(hdr, nil)
|
||||||
packet.ecn = protocol.ECT1
|
packet.ecn = protocol.ECT1
|
||||||
|
|
|
@ -252,7 +252,7 @@ func getFrames() []wire.Frame {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
for _, f := range getFrames() {
|
for _, f := range getFrames() {
|
||||||
b, err := f.Write(nil, version)
|
b, err := f.Append(nil, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ func main() {
|
||||||
}
|
}
|
||||||
f := frames[rand.Intn(len(frames))]
|
f := frames[rand.Intn(len(frames))]
|
||||||
var err error
|
var err error
|
||||||
b, err = f.Write(b, version)
|
b, err = f.Append(b, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ func Fuzz(data []byte) int {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lenBefore := len(b)
|
lenBefore := len(b)
|
||||||
b, err := f.Write(b, version)
|
b, err := f.Append(b, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("Error writing frame %#v: %s", f, err))
|
panic(fmt.Sprintf("Error writing frame %#v: %s", f, err))
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ func packRawPayload(version protocol.VersionNumber, frames []wire.Frame) []byte
|
||||||
var b []byte
|
var b []byte
|
||||||
for _, cf := range frames {
|
for _, cf := range frames {
|
||||||
var err error
|
var err error
|
||||||
b, err = cf.Write(b, version)
|
b, err = cf.Append(b, version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -107,7 +107,7 @@ func parseAckFrame(r *bytes.Reader, ackDelayExponent uint8, _ protocol.VersionNu
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes an ACK frame.
|
// Write writes an ACK frame.
|
||||||
func (f *AckFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *AckFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
hasECN := f.ECT0 > 0 || f.ECT1 > 0 || f.ECNCE > 0
|
hasECN := f.ECT0 > 0 || f.ECT1 > 0 || f.ECNCE > 0
|
||||||
if hasECN {
|
if hasECN {
|
||||||
b = append(b, 0b11)
|
b = append(b, 0b11)
|
||||||
|
|
|
@ -120,7 +120,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
||||||
DelayTime: delayTime,
|
DelayTime: delayTime,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
for i := uint8(0); i < 8; i++ {
|
for i := uint8(0); i < 8; i++ {
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
|
@ -205,7 +205,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
f := &AckFrame{
|
f := &AckFrame{
|
||||||
AckRanges: []AckRange{{Smallest: 100, Largest: 1337}},
|
AckRanges: []AckRange{{Smallest: 100, Largest: 1337}},
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x2}
|
expected := []byte{0x2}
|
||||||
expected = append(expected, encodeVarInt(1337)...) // largest acked
|
expected = append(expected, encodeVarInt(1337)...) // largest acked
|
||||||
|
@ -222,7 +222,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
ECT1: 37,
|
ECT1: 37,
|
||||||
ECNCE: 12345,
|
ECNCE: 12345,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
expected := []byte{0x3}
|
expected := []byte{0x3}
|
||||||
|
@ -241,7 +241,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
AckRanges: []AckRange{{Smallest: 0x2eadbeef, Largest: 0x2eadbeef}},
|
AckRanges: []AckRange{{Smallest: 0x2eadbeef, Largest: 0x2eadbeef}},
|
||||||
DelayTime: 18 * time.Millisecond,
|
DelayTime: 18 * time.Millisecond,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
|
@ -257,7 +257,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
f := &AckFrame{
|
f := &AckFrame{
|
||||||
AckRanges: []AckRange{{Smallest: 0x1337, Largest: 0x2eadbeef}},
|
AckRanges: []AckRange{{Smallest: 0x1337, Largest: 0x2eadbeef}},
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
|
@ -276,7 +276,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
Expect(f.validateAckRanges()).To(BeTrue())
|
Expect(f.validateAckRanges()).To(BeTrue())
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
|
@ -297,7 +297,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
Expect(f.validateAckRanges()).To(BeTrue())
|
Expect(f.validateAckRanges()).To(BeTrue())
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
r := bytes.NewReader(b)
|
r := bytes.NewReader(b)
|
||||||
|
@ -316,7 +316,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||||
}
|
}
|
||||||
f := &AckFrame{AckRanges: ackRanges}
|
f := &AckFrame{AckRanges: ackRanges}
|
||||||
Expect(f.validateAckRanges()).To(BeTrue())
|
Expect(f.validateAckRanges()).To(BeTrue())
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
// make sure the ACK frame is *a little bit* smaller than the MaxAckFrameSize
|
// make sure the ACK frame is *a little bit* smaller than the MaxAckFrameSize
|
||||||
|
|
|
@ -66,7 +66,7 @@ func (f *ConnectionCloseFrame) Length(protocol.VersionNumber) protocol.ByteCount
|
||||||
return length
|
return length
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *ConnectionCloseFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *ConnectionCloseFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
if f.IsApplicationError {
|
if f.IsApplicationError {
|
||||||
b = append(b, 0x1d)
|
b = append(b, 0x1d)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -88,7 +88,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() {
|
||||||
ErrorCode: 0xbeef,
|
ErrorCode: 0xbeef,
|
||||||
FrameType: 0x12345,
|
FrameType: 0x12345,
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x1c}
|
expected := []byte{0x1c}
|
||||||
expected = append(expected, encodeVarInt(0xbeef)...)
|
expected = append(expected, encodeVarInt(0xbeef)...)
|
||||||
|
@ -102,7 +102,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() {
|
||||||
ErrorCode: 0xdead,
|
ErrorCode: 0xdead,
|
||||||
ReasonPhrase: "foobar",
|
ReasonPhrase: "foobar",
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x1c}
|
expected := []byte{0x1c}
|
||||||
expected = append(expected, encodeVarInt(0xdead)...)
|
expected = append(expected, encodeVarInt(0xdead)...)
|
||||||
|
@ -118,7 +118,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() {
|
||||||
ErrorCode: 0xdead,
|
ErrorCode: 0xdead,
|
||||||
ReasonPhrase: "foobar",
|
ReasonPhrase: "foobar",
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x1d}
|
expected := []byte{0x1d}
|
||||||
expected = append(expected, encodeVarInt(0xdead)...)
|
expected = append(expected, encodeVarInt(0xdead)...)
|
||||||
|
@ -133,7 +133,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() {
|
||||||
FrameType: 0xdeadbeef,
|
FrameType: 0xdeadbeef,
|
||||||
ReasonPhrase: "foobar",
|
ReasonPhrase: "foobar",
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
})
|
})
|
||||||
|
@ -144,7 +144,7 @@ var _ = Describe("CONNECTION_CLOSE Frame", func() {
|
||||||
ErrorCode: 0xcafe,
|
ErrorCode: 0xcafe,
|
||||||
ReasonPhrase: "foobar",
|
ReasonPhrase: "foobar",
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(f.Length(protocol.Version1))))
|
||||||
})
|
})
|
||||||
|
|
|
@ -42,7 +42,7 @@ func parseCryptoFrame(r *bytes.Reader, _ protocol.VersionNumber) (*CryptoFrame,
|
||||||
return frame, nil
|
return frame, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *CryptoFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *CryptoFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x6)
|
b = append(b, 0x6)
|
||||||
b = quicvarint.Append(b, uint64(f.Offset))
|
b = quicvarint.Append(b, uint64(f.Offset))
|
||||||
b = quicvarint.Append(b, uint64(len(f.Data)))
|
b = quicvarint.Append(b, uint64(len(f.Data)))
|
||||||
|
|
|
@ -45,7 +45,7 @@ var _ = Describe("CRYPTO frame", func() {
|
||||||
Offset: 0x123456,
|
Offset: 0x123456,
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x6}
|
expected := []byte{0x6}
|
||||||
expected = append(expected, encodeVarInt(0x123456)...) // offset
|
expected = append(expected, encodeVarInt(0x123456)...) // offset
|
||||||
|
@ -70,13 +70,13 @@ var _ = Describe("CRYPTO frame", func() {
|
||||||
if maxDataLen == 0 { // 0 means that no valid CRYTPO frame can be written
|
if maxDataLen == 0 { // 0 means that no valid CRYTPO frame can be written
|
||||||
// check that writing a minimal size CRYPTO frame (i.e. with 1 byte data) is actually larger than the desired size
|
// check that writing a minimal size CRYPTO frame (i.e. with 1 byte data) is actually larger than the desired size
|
||||||
f.Data = []byte{0}
|
f.Data = []byte{0}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(BeNumerically(">", i))
|
Expect(len(b)).To(BeNumerically(">", i))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
f.Data = data[:int(maxDataLen)]
|
f.Data = data[:int(maxDataLen)]
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
||||||
// but a data lengths of x+1 needs 2 bytes
|
// but a data lengths of x+1 needs 2 bytes
|
||||||
|
|
|
@ -25,7 +25,7 @@ func parseDataBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*DataBloc
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *DataBlockedFrame) Write(b []byte, version protocol.VersionNumber) ([]byte, error) {
|
func (f *DataBlockedFrame) Append(b []byte, version protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x14)
|
b = append(b, 0x14)
|
||||||
b = quicvarint.Append(b, uint64(f.MaximumData))
|
b = quicvarint.Append(b, uint64(f.MaximumData))
|
||||||
return b, nil
|
return b, nil
|
||||||
|
|
|
@ -38,7 +38,7 @@ var _ = Describe("DATA_BLOCKED frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := DataBlockedFrame{MaximumData: 0xdeadbeef}
|
frame := DataBlockedFrame{MaximumData: 0xdeadbeef}
|
||||||
b, err := frame.Write(nil, protocol.VersionWhatever)
|
b, err := frame.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x14}
|
expected := []byte{0x14}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeef)...)
|
expected = append(expected, encodeVarInt(0xdeadbeef)...)
|
||||||
|
|
|
@ -44,7 +44,7 @@ func parseDatagramFrame(r *bytes.Reader, _ protocol.VersionNumber) (*DatagramFra
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *DatagramFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *DatagramFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
typeByte := uint8(0x30)
|
typeByte := uint8(0x30)
|
||||||
if f.DataLenPresent {
|
if f.DataLenPresent {
|
||||||
typeByte ^= 0b1
|
typeByte ^= 0b1
|
||||||
|
|
|
@ -64,7 +64,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
DataLenPresent: true,
|
DataLenPresent: true,
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x30 ^ 0x1}
|
expected := []byte{0x30 ^ 0x1}
|
||||||
expected = append(expected, encodeVarInt(0x6)...)
|
expected = append(expected, encodeVarInt(0x6)...)
|
||||||
|
@ -74,7 +74,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
|
|
||||||
It("writes a frame without length", func() {
|
It("writes a frame without length", func() {
|
||||||
f := &DatagramFrame{Data: []byte("Lorem ipsum")}
|
f := &DatagramFrame{Data: []byte("Lorem ipsum")}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x30}
|
expected := []byte{0x30}
|
||||||
expected = append(expected, []byte("Lorem ipsum")...)
|
expected = append(expected, []byte("Lorem ipsum")...)
|
||||||
|
@ -111,13 +111,13 @@ var _ = Describe("STREAM frame", func() {
|
||||||
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
||||||
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
||||||
f.Data = []byte{0}
|
f.Data = []byte{0}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(BeNumerically(">", i))
|
Expect(len(b)).To(BeNumerically(">", i))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
f.Data = data[:int(maxDataLen)]
|
f.Data = data[:int(maxDataLen)]
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(i))
|
Expect(b).To(HaveLen(i))
|
||||||
}
|
}
|
||||||
|
@ -133,13 +133,13 @@ var _ = Describe("STREAM frame", func() {
|
||||||
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
||||||
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
||||||
f.Data = []byte{0}
|
f.Data = []byte{0}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(BeNumerically(">", i))
|
Expect(len(b)).To(BeNumerically(">", i))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
f.Data = data[:int(maxDataLen)]
|
f.Data = data[:int(maxDataLen)]
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
||||||
// but a data lengths of x+1 needs 2 bytes
|
// but a data lengths of x+1 needs 2 bytes
|
||||||
|
|
|
@ -25,7 +25,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("skips PADDING frames", func() {
|
It("skips PADDING frames", func() {
|
||||||
b := []byte{0} // PADDING frame
|
b := []byte{0} // PADDING frame
|
||||||
b, err := (&PingFrame{}).Write(b, protocol.Version1)
|
b, err := (&PingFrame{}).Append(b, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
f, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
f, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -42,7 +42,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks ACK frames", func() {
|
It("unpacks ACK frames", func() {
|
||||||
f := &AckFrame{AckRanges: []AckRange{{Smallest: 1, Largest: 0x13}}}
|
f := &AckFrame{AckRanges: []AckRange{{Smallest: 1, Largest: 0x13}}}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -57,7 +57,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
||||||
DelayTime: time.Second,
|
DelayTime: time.Second,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -72,7 +72,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
||||||
DelayTime: time.Second,
|
DelayTime: time.Second,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.EncryptionHandshake)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.EncryptionHandshake)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -85,7 +85,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
FinalSize: 0xdecafbad1234,
|
FinalSize: 0xdecafbad1234,
|
||||||
ErrorCode: 0x1337,
|
ErrorCode: 0x1337,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -94,7 +94,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks STOP_SENDING frames", func() {
|
It("unpacks STOP_SENDING frames", func() {
|
||||||
f := &StopSendingFrame{StreamID: 0x42}
|
f := &StopSendingFrame{StreamID: 0x42}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -106,7 +106,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
Offset: 0x1337,
|
Offset: 0x1337,
|
||||||
Data: []byte("lorem ipsum"),
|
Data: []byte("lorem ipsum"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -116,7 +116,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks NEW_TOKEN frames", func() {
|
It("unpacks NEW_TOKEN frames", func() {
|
||||||
f := &NewTokenFrame{Token: []byte("foobar")}
|
f := &NewTokenFrame{Token: []byte("foobar")}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -131,7 +131,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
Fin: true,
|
Fin: true,
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -143,7 +143,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
f := &MaxDataFrame{
|
f := &MaxDataFrame{
|
||||||
MaximumData: 0xcafe,
|
MaximumData: 0xcafe,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -155,7 +155,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
StreamID: 0xdeadbeef,
|
StreamID: 0xdeadbeef,
|
||||||
MaximumStreamData: 0xdecafbad,
|
MaximumStreamData: 0xdecafbad,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -167,7 +167,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
Type: protocol.StreamTypeBidi,
|
Type: protocol.StreamTypeBidi,
|
||||||
MaxStreamNum: 0x1337,
|
MaxStreamNum: 0x1337,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -176,7 +176,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks DATA_BLOCKED frames", func() {
|
It("unpacks DATA_BLOCKED frames", func() {
|
||||||
f := &DataBlockedFrame{MaximumData: 0x1234}
|
f := &DataBlockedFrame{MaximumData: 0x1234}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -188,7 +188,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
StreamID: 0xdeadbeef,
|
StreamID: 0xdeadbeef,
|
||||||
MaximumStreamData: 0xdead,
|
MaximumStreamData: 0xdead,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -200,7 +200,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
Type: protocol.StreamTypeBidi,
|
Type: protocol.StreamTypeBidi,
|
||||||
StreamLimit: 0x1234567,
|
StreamLimit: 0x1234567,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -213,7 +213,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
ConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef},
|
ConnectionID: protocol.ConnectionID{0xde, 0xad, 0xbe, 0xef},
|
||||||
StatelessResetToken: protocol.StatelessResetToken{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
|
StatelessResetToken: protocol.StatelessResetToken{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -222,7 +222,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks RETIRE_CONNECTION_ID frames", func() {
|
It("unpacks RETIRE_CONNECTION_ID frames", func() {
|
||||||
f := &RetireConnectionIDFrame{SequenceNumber: 0x1337}
|
f := &RetireConnectionIDFrame{SequenceNumber: 0x1337}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -231,7 +231,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks PATH_CHALLENGE frames", func() {
|
It("unpacks PATH_CHALLENGE frames", func() {
|
||||||
f := &PathChallengeFrame{Data: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}}
|
f := &PathChallengeFrame{Data: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -242,7 +242,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks PATH_RESPONSE frames", func() {
|
It("unpacks PATH_RESPONSE frames", func() {
|
||||||
f := &PathResponseFrame{Data: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}}
|
f := &PathResponseFrame{Data: [8]byte{1, 2, 3, 4, 5, 6, 7, 8}}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -256,7 +256,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
IsApplicationError: true,
|
IsApplicationError: true,
|
||||||
ReasonPhrase: "foobar",
|
ReasonPhrase: "foobar",
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -265,7 +265,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks HANDSHAKE_DONE frames", func() {
|
It("unpacks HANDSHAKE_DONE frames", func() {
|
||||||
f := &HandshakeDoneFrame{}
|
f := &HandshakeDoneFrame{}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -274,7 +274,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
|
|
||||||
It("unpacks DATAGRAM frames", func() {
|
It("unpacks DATAGRAM frames", func() {
|
||||||
f := &DatagramFrame{Data: []byte("foobar")}
|
f := &DatagramFrame{Data: []byte("foobar")}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -284,7 +284,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
It("errors when DATAGRAM frames are not supported", func() {
|
It("errors when DATAGRAM frames are not supported", func() {
|
||||||
parser = NewFrameParser(false, protocol.Version1)
|
parser = NewFrameParser(false, protocol.Version1)
|
||||||
f := &DatagramFrame{Data: []byte("foobar")}
|
f := &DatagramFrame{Data: []byte("foobar")}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, err = parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
_, err = parser.ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
Expect(err).To(MatchError(&qerr.TransportError{
|
Expect(err).To(MatchError(&qerr.TransportError{
|
||||||
|
@ -308,7 +308,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
StreamID: 0x1337,
|
StreamID: 0x1337,
|
||||||
MaximumStreamData: 0xdeadbeef,
|
MaximumStreamData: 0xdeadbeef,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, err = parser.ParseNext(bytes.NewReader(b[:len(b)-2]), protocol.Encryption1RTT)
|
_, err = parser.ParseNext(bytes.NewReader(b[:len(b)-2]), protocol.Encryption1RTT)
|
||||||
Expect(err).To(HaveOccurred())
|
Expect(err).To(HaveOccurred())
|
||||||
|
@ -344,7 +344,7 @@ var _ = Describe("Frame parsing", func() {
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
framesSerialized = nil
|
framesSerialized = nil
|
||||||
for _, frame := range frames {
|
for _, frame := range frames {
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
framesSerialized = append(framesSerialized, b)
|
framesSerialized = append(framesSerialized, b)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ func parseHandshakeDoneFrame(r *bytes.Reader, _ protocol.VersionNumber) (*Handsh
|
||||||
return &HandshakeDoneFrame{}, nil
|
return &HandshakeDoneFrame{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *HandshakeDoneFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *HandshakeDoneFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
return append(b, 0x1e), nil
|
return append(b, 0x1e), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ var _ = Describe("HANDSHAKE_DONE frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := HandshakeDoneFrame{}
|
frame := HandshakeDoneFrame{}
|
||||||
b, err := frame.Write(nil, protocol.VersionWhatever)
|
b, err := frame.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(Equal([]byte{0x1e}))
|
Expect(b).To(Equal([]byte{0x1e}))
|
||||||
})
|
})
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
// A Frame in QUIC
|
// A Frame in QUIC
|
||||||
type Frame interface {
|
type Frame interface {
|
||||||
Write(b []byte, version protocol.VersionNumber) ([]byte, error)
|
Append(b []byte, version protocol.VersionNumber) ([]byte, error)
|
||||||
Length(version protocol.VersionNumber) protocol.ByteCount
|
Length(version protocol.VersionNumber) protocol.ByteCount
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ func parseMaxDataFrame(r *bytes.Reader, _ protocol.VersionNumber) (*MaxDataFrame
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes a MAX_STREAM_DATA frame
|
// Write writes a MAX_STREAM_DATA frame
|
||||||
func (f *MaxDataFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *MaxDataFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x10)
|
b = append(b, 0x10)
|
||||||
b = quicvarint.Append(b, uint64(f.MaximumData))
|
b = quicvarint.Append(b, uint64(f.MaximumData))
|
||||||
return b, nil
|
return b, nil
|
||||||
|
|
|
@ -46,7 +46,7 @@ var _ = Describe("MAX_DATA frame", func() {
|
||||||
f := &MaxDataFrame{
|
f := &MaxDataFrame{
|
||||||
MaximumData: 0xdeadbeefcafe,
|
MaximumData: 0xdeadbeefcafe,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x10}
|
expected := []byte{0x10}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
||||||
|
|
|
@ -33,7 +33,7 @@ func parseMaxStreamDataFrame(r *bytes.Reader, _ protocol.VersionNumber) (*MaxStr
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *MaxStreamDataFrame) Write(b []byte, version protocol.VersionNumber) ([]byte, error) {
|
func (f *MaxStreamDataFrame) Append(b []byte, version protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x11)
|
b = append(b, 0x11)
|
||||||
b = quicvarint.Append(b, uint64(f.StreamID))
|
b = quicvarint.Append(b, uint64(f.StreamID))
|
||||||
b = quicvarint.Append(b, uint64(f.MaximumStreamData))
|
b = quicvarint.Append(b, uint64(f.MaximumStreamData))
|
||||||
|
|
|
@ -54,7 +54,7 @@ var _ = Describe("MAX_STREAM_DATA frame", func() {
|
||||||
expected := []byte{0x11}
|
expected := []byte{0x11}
|
||||||
expected = append(expected, encodeVarInt(0xdecafbad)...)
|
expected = append(expected, encodeVarInt(0xdecafbad)...)
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeefcafe42)...)
|
expected = append(expected, encodeVarInt(0xdeadbeefcafe42)...)
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(Equal(expected))
|
Expect(b).To(Equal(expected))
|
||||||
})
|
})
|
||||||
|
|
|
@ -38,7 +38,7 @@ func parseMaxStreamsFrame(r *bytes.Reader, _ protocol.VersionNumber) (*MaxStream
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *MaxStreamsFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *MaxStreamsFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
switch f.Type {
|
switch f.Type {
|
||||||
case protocol.StreamTypeBidi:
|
case protocol.StreamTypeBidi:
|
||||||
b = append(b, 0x12)
|
b = append(b, 0x12)
|
||||||
|
|
|
@ -54,7 +54,7 @@ var _ = Describe("MAX_STREAMS frame", func() {
|
||||||
Type: streamType,
|
Type: streamType,
|
||||||
MaxStreamNum: protocol.MaxStreamCount,
|
MaxStreamNum: protocol.MaxStreamCount,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parseMaxStreamsFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
frame, err := parseMaxStreamsFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -66,7 +66,7 @@ var _ = Describe("MAX_STREAMS frame", func() {
|
||||||
Type: streamType,
|
Type: streamType,
|
||||||
MaxStreamNum: protocol.MaxStreamCount + 1,
|
MaxStreamNum: protocol.MaxStreamCount + 1,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, err = parseMaxStreamsFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
_, err = parseMaxStreamsFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
||||||
Expect(err).To(MatchError(fmt.Sprintf("%d exceeds the maximum stream count", protocol.MaxStreamCount+1)))
|
Expect(err).To(MatchError(fmt.Sprintf("%d exceeds the maximum stream count", protocol.MaxStreamCount+1)))
|
||||||
|
@ -80,7 +80,7 @@ var _ = Describe("MAX_STREAMS frame", func() {
|
||||||
Type: protocol.StreamTypeBidi,
|
Type: protocol.StreamTypeBidi,
|
||||||
MaxStreamNum: 0xdeadbeef,
|
MaxStreamNum: 0xdeadbeef,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x12}
|
expected := []byte{0x12}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeef)...)
|
expected = append(expected, encodeVarInt(0xdeadbeef)...)
|
||||||
|
@ -92,7 +92,7 @@ var _ = Describe("MAX_STREAMS frame", func() {
|
||||||
Type: protocol.StreamTypeUni,
|
Type: protocol.StreamTypeUni,
|
||||||
MaxStreamNum: 0xdecafbad,
|
MaxStreamNum: 0xdecafbad,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x13}
|
expected := []byte{0x13}
|
||||||
expected = append(expected, encodeVarInt(0xdecafbad)...)
|
expected = append(expected, encodeVarInt(0xdecafbad)...)
|
||||||
|
|
|
@ -60,7 +60,7 @@ func parseNewConnectionIDFrame(r *bytes.Reader, _ protocol.VersionNumber) (*NewC
|
||||||
return frame, nil
|
return frame, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *NewConnectionIDFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *NewConnectionIDFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x18)
|
b = append(b, 0x18)
|
||||||
b = quicvarint.Append(b, f.SequenceNumber)
|
b = quicvarint.Append(b, f.SequenceNumber)
|
||||||
b = quicvarint.Append(b, f.RetirePriorTo)
|
b = quicvarint.Append(b, f.RetirePriorTo)
|
||||||
|
|
|
@ -77,7 +77,7 @@ var _ = Describe("NEW_CONNECTION_ID frame", func() {
|
||||||
ConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6},
|
ConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6},
|
||||||
StatelessResetToken: token,
|
StatelessResetToken: token,
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x18}
|
expected := []byte{0x18}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...)
|
expected = append(expected, encodeVarInt(0x1337)...)
|
||||||
|
@ -96,7 +96,7 @@ var _ = Describe("NEW_CONNECTION_ID frame", func() {
|
||||||
ConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
ConnectionID: protocol.ConnectionID{1, 2, 3, 4, 5, 6, 7, 8},
|
||||||
StatelessResetToken: token,
|
StatelessResetToken: token,
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(frame.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(frame.Length(protocol.Version1))))
|
||||||
})
|
})
|
||||||
|
|
|
@ -35,7 +35,7 @@ func parseNewTokenFrame(r *bytes.Reader, _ protocol.VersionNumber) (*NewTokenFra
|
||||||
return &NewTokenFrame{Token: token}, nil
|
return &NewTokenFrame{Token: token}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *NewTokenFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *NewTokenFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x7)
|
b = append(b, 0x7)
|
||||||
b = quicvarint.Append(b, uint64(len(f.Token)))
|
b = quicvarint.Append(b, uint64(len(f.Token)))
|
||||||
b = append(b, f.Token...)
|
b = append(b, f.Token...)
|
||||||
|
|
|
@ -50,7 +50,7 @@ var _ = Describe("NEW_TOKEN frame", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
|
token := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
|
||||||
f := &NewTokenFrame{Token: []byte(token)}
|
f := &NewTokenFrame{Token: []byte(token)}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x7}
|
expected := []byte{0x7}
|
||||||
expected = append(expected, encodeVarInt(uint64(len(token)))...)
|
expected = append(expected, encodeVarInt(uint64(len(token)))...)
|
||||||
|
|
|
@ -26,7 +26,7 @@ func parsePathChallengeFrame(r *bytes.Reader, _ protocol.VersionNumber) (*PathCh
|
||||||
return frame, nil
|
return frame, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *PathChallengeFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *PathChallengeFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x1a)
|
b = append(b, 0x1a)
|
||||||
b = append(b, f.Data[:]...)
|
b = append(b, f.Data[:]...)
|
||||||
return b, nil
|
return b, nil
|
||||||
|
|
|
@ -34,7 +34,7 @@ var _ = Describe("PATH_CHALLENGE frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := PathChallengeFrame{Data: [8]byte{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}}
|
frame := PathChallengeFrame{Data: [8]byte{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}}
|
||||||
b, err := frame.Write(nil, protocol.VersionWhatever)
|
b, err := frame.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(Equal([]byte{0x1a, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}))
|
Expect(b).To(Equal([]byte{0x1a, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}))
|
||||||
})
|
})
|
||||||
|
|
|
@ -26,7 +26,7 @@ func parsePathResponseFrame(r *bytes.Reader, _ protocol.VersionNumber) (*PathRes
|
||||||
return frame, nil
|
return frame, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *PathResponseFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *PathResponseFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x1b)
|
b = append(b, 0x1b)
|
||||||
b = append(b, f.Data[:]...)
|
b = append(b, f.Data[:]...)
|
||||||
return b, nil
|
return b, nil
|
||||||
|
|
|
@ -33,7 +33,7 @@ var _ = Describe("PATH_RESPONSE frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := PathResponseFrame{Data: [8]byte{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}}
|
frame := PathResponseFrame{Data: [8]byte{0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}}
|
||||||
b, err := frame.Write(nil, protocol.VersionWhatever)
|
b, err := frame.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(Equal([]byte{0x1b, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}))
|
Expect(b).To(Equal([]byte{0x1b, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0x13, 0x37}))
|
||||||
})
|
})
|
||||||
|
|
|
@ -16,7 +16,7 @@ func parsePingFrame(r *bytes.Reader, _ protocol.VersionNumber) (*PingFrame, erro
|
||||||
return &PingFrame{}, nil
|
return &PingFrame{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *PingFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *PingFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
return append(b, 0x1), nil
|
return append(b, 0x1), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ var _ = Describe("PING frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := PingFrame{}
|
frame := PingFrame{}
|
||||||
b, err := frame.Write(nil, protocol.VersionWhatever)
|
b, err := frame.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(Equal([]byte{0x1}))
|
Expect(b).To(Equal([]byte{0x1}))
|
||||||
})
|
})
|
||||||
|
|
|
@ -44,7 +44,7 @@ func parseResetStreamFrame(r *bytes.Reader, _ protocol.VersionNumber) (*ResetStr
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *ResetStreamFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *ResetStreamFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x4)
|
b = append(b, 0x4)
|
||||||
b = quicvarint.Append(b, uint64(f.StreamID))
|
b = quicvarint.Append(b, uint64(f.StreamID))
|
||||||
b = quicvarint.Append(b, uint64(f.ErrorCode))
|
b = quicvarint.Append(b, uint64(f.ErrorCode))
|
||||||
|
|
|
@ -47,7 +47,7 @@ var _ = Describe("RESET_STREAM frame", func() {
|
||||||
FinalSize: 0x11223344decafbad,
|
FinalSize: 0x11223344decafbad,
|
||||||
ErrorCode: 0xcafe,
|
ErrorCode: 0xcafe,
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x4}
|
expected := []byte{0x4}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...)
|
expected = append(expected, encodeVarInt(0x1337)...)
|
||||||
|
|
|
@ -24,7 +24,7 @@ func parseRetireConnectionIDFrame(r *bytes.Reader, _ protocol.VersionNumber) (*R
|
||||||
return &RetireConnectionIDFrame{SequenceNumber: seq}, nil
|
return &RetireConnectionIDFrame{SequenceNumber: seq}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *RetireConnectionIDFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *RetireConnectionIDFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x19)
|
b = append(b, 0x19)
|
||||||
b = quicvarint.Append(b, f.SequenceNumber)
|
b = quicvarint.Append(b, f.SequenceNumber)
|
||||||
return b, nil
|
return b, nil
|
||||||
|
|
|
@ -36,7 +36,7 @@ var _ = Describe("NEW_CONNECTION_ID frame", func() {
|
||||||
Context("when writing", func() {
|
Context("when writing", func() {
|
||||||
It("writes a sample frame", func() {
|
It("writes a sample frame", func() {
|
||||||
frame := &RetireConnectionIDFrame{SequenceNumber: 0x1337}
|
frame := &RetireConnectionIDFrame{SequenceNumber: 0x1337}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x19}
|
expected := []byte{0x19}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...)
|
expected = append(expected, encodeVarInt(0x1337)...)
|
||||||
|
@ -45,7 +45,7 @@ var _ = Describe("NEW_CONNECTION_ID frame", func() {
|
||||||
|
|
||||||
It("has the correct length", func() {
|
It("has the correct length", func() {
|
||||||
frame := &RetireConnectionIDFrame{SequenceNumber: 0xdecafbad}
|
frame := &RetireConnectionIDFrame{SequenceNumber: 0xdecafbad}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(b).To(HaveLen(int(frame.Length(protocol.Version1))))
|
Expect(b).To(HaveLen(int(frame.Length(protocol.Version1))))
|
||||||
})
|
})
|
||||||
|
|
|
@ -40,7 +40,7 @@ func (f *StopSendingFrame) Length(_ protocol.VersionNumber) protocol.ByteCount {
|
||||||
return 1 + quicvarint.Len(uint64(f.StreamID)) + quicvarint.Len(uint64(f.ErrorCode))
|
return 1 + quicvarint.Len(uint64(f.StreamID)) + quicvarint.Len(uint64(f.ErrorCode))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *StopSendingFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *StopSendingFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x5)
|
b = append(b, 0x5)
|
||||||
b = quicvarint.Append(b, uint64(f.StreamID))
|
b = quicvarint.Append(b, uint64(f.StreamID))
|
||||||
b = quicvarint.Append(b, uint64(f.ErrorCode))
|
b = quicvarint.Append(b, uint64(f.ErrorCode))
|
||||||
|
|
|
@ -44,7 +44,7 @@ var _ = Describe("STOP_SENDING frame", func() {
|
||||||
StreamID: 0xdeadbeefcafe,
|
StreamID: 0xdeadbeefcafe,
|
||||||
ErrorCode: 0xdecafbad,
|
ErrorCode: 0xdecafbad,
|
||||||
}
|
}
|
||||||
b, err := frame.Write(nil, protocol.Version1)
|
b, err := frame.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x5}
|
expected := []byte{0x5}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
||||||
|
|
|
@ -33,7 +33,7 @@ func parseStreamDataBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*St
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *StreamDataBlockedFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *StreamDataBlockedFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
b = append(b, 0x15)
|
b = append(b, 0x15)
|
||||||
b = quicvarint.Append(b, uint64(f.StreamID))
|
b = quicvarint.Append(b, uint64(f.StreamID))
|
||||||
b = quicvarint.Append(b, uint64(f.MaximumStreamData))
|
b = quicvarint.Append(b, uint64(f.MaximumStreamData))
|
||||||
|
|
|
@ -51,7 +51,7 @@ var _ = Describe("STREAM_DATA_BLOCKED frame", func() {
|
||||||
StreamID: 0xdecafbad,
|
StreamID: 0xdecafbad,
|
||||||
MaximumStreamData: 0x1337,
|
MaximumStreamData: 0x1337,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x15}
|
expected := []byte{0x15}
|
||||||
expected = append(expected, encodeVarInt(uint64(f.StreamID))...)
|
expected = append(expected, encodeVarInt(uint64(f.StreamID))...)
|
||||||
|
|
|
@ -84,7 +84,7 @@ func parseStreamFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamFrame,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write writes a STREAM frame
|
// Write writes a STREAM frame
|
||||||
func (f *StreamFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *StreamFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
if len(f.Data) == 0 && !f.Fin {
|
if len(f.Data) == 0 && !f.Fin {
|
||||||
return nil, errors.New("StreamFrame: attempting to write empty frame without FIN")
|
return nil, errors.New("StreamFrame: attempting to write empty frame without FIN")
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
StreamID: 0x1337,
|
StreamID: 0x1337,
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x8}
|
expected := []byte{0x8}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
||||||
|
@ -159,7 +159,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
Offset: 0x123456,
|
Offset: 0x123456,
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x8 ^ 0x4}
|
expected := []byte{0x8 ^ 0x4}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
||||||
|
@ -174,7 +174,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
Offset: 0x123456,
|
Offset: 0x123456,
|
||||||
Fin: true,
|
Fin: true,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x8 ^ 0x4 ^ 0x1}
|
expected := []byte{0x8 ^ 0x4 ^ 0x1}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
||||||
|
@ -188,7 +188,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
Data: []byte("foobar"),
|
Data: []byte("foobar"),
|
||||||
DataLenPresent: true,
|
DataLenPresent: true,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x8 ^ 0x2}
|
expected := []byte{0x8 ^ 0x2}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
||||||
|
@ -204,7 +204,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
DataLenPresent: true,
|
DataLenPresent: true,
|
||||||
Offset: 0x123456,
|
Offset: 0x123456,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x8 ^ 0x4 ^ 0x2}
|
expected := []byte{0x8 ^ 0x4 ^ 0x2}
|
||||||
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
expected = append(expected, encodeVarInt(0x1337)...) // stream ID
|
||||||
|
@ -219,7 +219,7 @@ var _ = Describe("STREAM frame", func() {
|
||||||
StreamID: 0x42,
|
StreamID: 0x42,
|
||||||
Offset: 0x1337,
|
Offset: 0x1337,
|
||||||
}
|
}
|
||||||
_, err := f.Write(nil, protocol.Version1)
|
_, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).To(MatchError("StreamFrame: attempting to write empty frame without FIN"))
|
Expect(err).To(MatchError("StreamFrame: attempting to write empty frame without FIN"))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -268,13 +268,13 @@ var _ = Describe("STREAM frame", func() {
|
||||||
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
||||||
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
||||||
f.Data = []byte{0}
|
f.Data = []byte{0}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(BeNumerically(">", i))
|
Expect(len(b)).To(BeNumerically(">", i))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
f.Data = data[:int(maxDataLen)]
|
f.Data = data[:int(maxDataLen)]
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(Equal(i))
|
Expect(len(b)).To(Equal(i))
|
||||||
}
|
}
|
||||||
|
@ -294,13 +294,13 @@ var _ = Describe("STREAM frame", func() {
|
||||||
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
if maxDataLen == 0 { // 0 means that no valid STREAM frame can be written
|
||||||
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
// check that writing a minimal size STREAM frame (i.e. with 1 byte data) is actually larger than the desired size
|
||||||
f.Data = []byte{0}
|
f.Data = []byte{0}
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(b)).To(BeNumerically(">", i))
|
Expect(len(b)).To(BeNumerically(">", i))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
f.Data = data[:int(maxDataLen)]
|
f.Data = data[:int(maxDataLen)]
|
||||||
b, err := f.Write(nil, protocol.Version1)
|
b, err := f.Append(nil, protocol.Version1)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
// There's *one* pathological case, where a data length of x can be encoded into 1 byte
|
||||||
// but a data lengths of x+1 needs 2 bytes
|
// but a data lengths of x+1 needs 2 bytes
|
||||||
|
|
|
@ -38,7 +38,7 @@ func parseStreamsBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*Strea
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *StreamsBlockedFrame) Write(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
func (f *StreamsBlockedFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
||||||
switch f.Type {
|
switch f.Type {
|
||||||
case protocol.StreamTypeBidi:
|
case protocol.StreamTypeBidi:
|
||||||
b = append(b, 0x16)
|
b = append(b, 0x16)
|
||||||
|
|
|
@ -55,7 +55,7 @@ var _ = Describe("STREAMS_BLOCKED frame", func() {
|
||||||
Type: streamType,
|
Type: streamType,
|
||||||
StreamLimit: protocol.MaxStreamCount,
|
StreamLimit: protocol.MaxStreamCount,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
frame, err := parseStreamsBlockedFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
frame, err := parseStreamsBlockedFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
@ -67,7 +67,7 @@ var _ = Describe("STREAMS_BLOCKED frame", func() {
|
||||||
Type: streamType,
|
Type: streamType,
|
||||||
StreamLimit: protocol.MaxStreamCount + 1,
|
StreamLimit: protocol.MaxStreamCount + 1,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
_, err = parseStreamsBlockedFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
_, err = parseStreamsBlockedFrame(bytes.NewReader(b), protocol.VersionWhatever)
|
||||||
Expect(err).To(MatchError(fmt.Sprintf("%d exceeds the maximum stream count", protocol.MaxStreamCount+1)))
|
Expect(err).To(MatchError(fmt.Sprintf("%d exceeds the maximum stream count", protocol.MaxStreamCount+1)))
|
||||||
|
@ -81,7 +81,7 @@ var _ = Describe("STREAMS_BLOCKED frame", func() {
|
||||||
Type: protocol.StreamTypeBidi,
|
Type: protocol.StreamTypeBidi,
|
||||||
StreamLimit: 0xdeadbeefcafe,
|
StreamLimit: 0xdeadbeefcafe,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x16}
|
expected := []byte{0x16}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
||||||
|
@ -93,7 +93,7 @@ var _ = Describe("STREAMS_BLOCKED frame", func() {
|
||||||
Type: protocol.StreamTypeUni,
|
Type: protocol.StreamTypeUni,
|
||||||
StreamLimit: 0xdeadbeefcafe,
|
StreamLimit: 0xdeadbeefcafe,
|
||||||
}
|
}
|
||||||
b, err := f.Write(nil, protocol.VersionWhatever)
|
b, err := f.Append(nil, protocol.VersionWhatever)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
expected := []byte{0x17}
|
expected := []byte{0x17}
|
||||||
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
expected = append(expected, encodeVarInt(0xdeadbeefcafe)...)
|
||||||
|
|
|
@ -834,7 +834,7 @@ func (p *packetPacker) appendPacket(buffer *packetBuffer, header *wire.ExtendedH
|
||||||
|
|
||||||
if payload.ack != nil {
|
if payload.ack != nil {
|
||||||
var err error
|
var err error
|
||||||
raw, err = payload.ack.Write(raw, p.version)
|
raw, err = payload.ack.Append(raw, p.version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -844,7 +844,7 @@ func (p *packetPacker) appendPacket(buffer *packetBuffer, header *wire.ExtendedH
|
||||||
}
|
}
|
||||||
for _, frame := range payload.frames {
|
for _, frame := range payload.frames {
|
||||||
var err error
|
var err error
|
||||||
raw, err = frame.Write(raw, p.version)
|
raw, err = frame.Append(raw, p.version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -499,7 +499,7 @@ var _ = Describe("Packet packer", func() {
|
||||||
p, err := packer.PackPacket()
|
p, err := packer.PackPacket()
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(p).ToNot(BeNil())
|
Expect(p).ToNot(BeNil())
|
||||||
b, err := f.Write(nil, packer.version)
|
b, err := f.Append(nil, packer.version)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(p.frames).To(Equal([]ackhandler.Frame{{Frame: f}}))
|
Expect(p.frames).To(Equal([]ackhandler.Frame{{Frame: f}}))
|
||||||
Expect(p.buffer.Data).To(ContainSubstring(string(b)))
|
Expect(p.buffer.Data).To(ContainSubstring(string(b)))
|
||||||
|
|
|
@ -640,7 +640,7 @@ func (s *baseServer) sendError(remoteAddr net.Addr, hdr *wire.Header, sealer han
|
||||||
payloadOffset := buf.Len()
|
payloadOffset := buf.Len()
|
||||||
|
|
||||||
raw := buf.Bytes()
|
raw := buf.Bytes()
|
||||||
raw, err := ccf.Write(raw, hdr.Version)
|
raw, err := ccf.Append(raw, hdr.Version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ var _ = Describe("Streams Map (incoming)", func() {
|
||||||
|
|
||||||
// check that the frame can be serialized and deserialized
|
// check that the frame can be serialized and deserialized
|
||||||
checkFrameSerialization := func(f wire.Frame) {
|
checkFrameSerialization := func(f wire.Frame) {
|
||||||
b, err := f.Write(nil, protocol.VersionTLS)
|
b, err := f.Append(nil, protocol.VersionTLS)
|
||||||
ExpectWithOffset(1, err).ToNot(HaveOccurred())
|
ExpectWithOffset(1, err).ToNot(HaveOccurred())
|
||||||
frame, err := wire.NewFrameParser(false, protocol.VersionTLS).ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
frame, err := wire.NewFrameParser(false, protocol.VersionTLS).ParseNext(bytes.NewReader(b), protocol.Encryption1RTT)
|
||||||
ExpectWithOffset(1, err).ToNot(HaveOccurred())
|
ExpectWithOffset(1, err).ToNot(HaveOccurred())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue