From 07f5daa7ba7953280fd721567e1340833d51a1fd Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Sun, 10 Apr 2016 20:02:35 +0200 Subject: [PATCH] remove lengths from public header struct --- frame.go | 1 - public_header.go | 40 ++++++++++++++++++++-------------------- public_header_test.go | 8 -------- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/frame.go b/frame.go index eea6d472..dd9f2aba 100644 --- a/frame.go +++ b/frame.go @@ -6,7 +6,6 @@ import ( ) // A StreamFrame of QUIC -// TODO: Maybe remove unneeded stuff, e.g. lengths? type StreamFrame struct { FinBit bool StreamID uint32 diff --git a/public_header.go b/public_header.go index b5661992..cf2b0825 100644 --- a/public_header.go +++ b/public_header.go @@ -1,19 +1,17 @@ package quic -import "io" +import ( + "bytes" + "io" +) // The PublicHeader of a QUIC packet type PublicHeader struct { - VersionFlag bool - ResetFlag bool - - ConnectionIDLength uint8 - ConnectionID uint64 - - QuicVersion uint32 - - PacketNumberLength uint8 - PacketNumber uint64 + VersionFlag bool + ResetFlag bool + ConnectionID uint64 + QuicVersion uint32 + PacketNumber uint64 } // ParsePublicHeader parses a QUIC packet's public header @@ -27,27 +25,29 @@ func ParsePublicHeader(b io.ByteReader) (*PublicHeader, error) { } header.VersionFlag = publicFlagByte&0x01 > 0 header.ResetFlag = publicFlagByte&0x02 > 0 + + var connectionIDLen, packetNumberLen uint8 switch publicFlagByte & 0x0C { case 0x0C: - header.ConnectionIDLength = 8 + connectionIDLen = 8 case 0x08: - header.ConnectionIDLength = 4 + connectionIDLen = 4 case 0x04: - header.ConnectionIDLength = 1 + connectionIDLen = 1 } switch publicFlagByte & 0x30 { case 0x30: - header.PacketNumberLength = 6 + packetNumberLen = 6 case 0x20: - header.PacketNumberLength = 4 + packetNumberLen = 4 case 0x10: - header.PacketNumberLength = 2 + packetNumberLen = 2 case 0x00: - header.PacketNumberLength = 1 + packetNumberLen = 1 } // Connection ID - header.ConnectionID, err = readUintN(b, header.ConnectionIDLength) + header.ConnectionID, err = readUintN(b, connectionIDLen) if err != nil { return nil, err } @@ -63,7 +63,7 @@ func ParsePublicHeader(b io.ByteReader) (*PublicHeader, error) { } // Packet number - header.PacketNumber, err = readUintN(b, header.PacketNumberLength) + header.PacketNumber, err = readUintN(b, packetNumberLen) if err != nil { return nil, err } diff --git a/public_header_test.go b/public_header_test.go index 5497afb1..19629151 100644 --- a/public_header_test.go +++ b/public_header_test.go @@ -16,10 +16,8 @@ var _ = Describe("Public Header", func() { Expect(err).ToNot(HaveOccurred()) Expect(publicHeader.VersionFlag).To(BeTrue()) Expect(publicHeader.ResetFlag).To(BeFalse()) - Expect(publicHeader.ConnectionIDLength).To(Equal(uint8(8))) Expect(publicHeader.ConnectionID).To(Equal(uint64(0xf61986669b9ffa4c))) Expect(publicHeader.QuicVersion).To(Equal(binary.BigEndian.Uint32([]byte("Q030")))) - Expect(publicHeader.PacketNumberLength).To(Equal(uint8(1))) Expect(publicHeader.PacketNumber).To(Equal(uint64(1))) Expect(b.Len()).To(BeZero()) }) @@ -29,7 +27,6 @@ var _ = Describe("Public Header", func() { publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) Expect(publicHeader.VersionFlag).To(BeFalse()) - Expect(publicHeader.ConnectionIDLength).To(Equal(uint8(4))) Expect(publicHeader.ConnectionID).To(Equal(uint64(0x9b9ffa4c))) Expect(b.Len()).To(BeZero()) }) @@ -39,7 +36,6 @@ var _ = Describe("Public Header", func() { publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) Expect(publicHeader.VersionFlag).To(BeFalse()) - Expect(publicHeader.ConnectionIDLength).To(Equal(uint8(1))) Expect(publicHeader.ConnectionID).To(Equal(uint64(0x4c))) Expect(b.Len()).To(BeZero()) }) @@ -49,7 +45,6 @@ var _ = Describe("Public Header", func() { publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) Expect(publicHeader.VersionFlag).To(BeFalse()) - Expect(publicHeader.ConnectionIDLength).To(Equal(uint8(0))) Expect(b.Len()).To(BeZero()) }) @@ -57,7 +52,6 @@ var _ = Describe("Public Header", func() { b := bytes.NewReader([]byte{0x10, 0xde, 0xca}) publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) - Expect(publicHeader.PacketNumberLength).To(Equal(uint8(2))) Expect(publicHeader.PacketNumber).To(Equal(uint64(0xdeca))) Expect(b.Len()).To(BeZero()) }) @@ -66,7 +60,6 @@ var _ = Describe("Public Header", func() { b := bytes.NewReader([]byte{0x20, 0xde, 0xca, 0xfb, 0xad}) publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) - Expect(publicHeader.PacketNumberLength).To(Equal(uint8(4))) Expect(publicHeader.PacketNumber).To(Equal(uint64(0xdecafbad))) Expect(b.Len()).To(BeZero()) }) @@ -75,7 +68,6 @@ var _ = Describe("Public Header", func() { b := bytes.NewReader([]byte{0x30, 0xde, 0xca, 0xfb, 0xad, 0x42, 0x23}) publicHeader, err := ParsePublicHeader(b) Expect(err).ToNot(HaveOccurred()) - Expect(publicHeader.PacketNumberLength).To(Equal(uint8(6))) Expect(publicHeader.PacketNumber).To(Equal(uint64(0xdecafbad4223))) Expect(b.Len()).To(BeZero()) })