From 922a2975e82d308e70e5d894b061007899455a50 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 17 Apr 2016 13:54:26 +0700 Subject: [PATCH] use PacketNumber type in ACK frame parsing, fix linter warnings --- frames/ack_frame.go | 9 ++++++--- frames/ack_frame_test.go | 5 +++-- session.go | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/frames/ack_frame.go b/frames/ack_frame.go index 6080ce40..e7e1295c 100644 --- a/frames/ack_frame.go +++ b/frames/ack_frame.go @@ -3,13 +3,14 @@ package frames import ( "bytes" + "github.com/lucas-clemente/quic-go/protocol" "github.com/lucas-clemente/quic-go/utils" ) // An AckFrame in QUIC type AckFrame struct { Entropy byte - LargestObserved uint64 + LargestObserved protocol.PacketNumber DelayTime uint16 // Todo: properly interpret this value as described in the specification } @@ -47,20 +48,22 @@ func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { largestObservedLen = 1 } - var missingSequenceNumberDeltaLen uint8 = 2 * (typeByte & 0x03) + missingSequenceNumberDeltaLen := 2 * (typeByte & 0x03) if missingSequenceNumberDeltaLen == 0 { missingSequenceNumberDeltaLen = 1 } + _ = missingSequenceNumberDeltaLen frame.Entropy, err = r.ReadByte() if err != nil { return nil, err } - frame.LargestObserved, err = utils.ReadUintN(r, largestObservedLen) + largestObserved, err := utils.ReadUintN(r, largestObservedLen) if err != nil { return nil, err } + frame.LargestObserved = protocol.PacketNumber(largestObserved) frame.DelayTime, err = utils.ReadUint16(r) if err != nil { diff --git a/frames/ack_frame_test.go b/frames/ack_frame_test.go index 1d9e822f..2f15f075 100644 --- a/frames/ack_frame_test.go +++ b/frames/ack_frame_test.go @@ -3,6 +3,7 @@ package frames import ( "bytes" + "github.com/lucas-clemente/quic-go/protocol" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) @@ -14,7 +15,7 @@ var _ = Describe("AckFrame", func() { frame, err := ParseAckFrame(b) Expect(err).ToNot(HaveOccurred()) Expect(frame.Entropy).To(Equal(byte(0xA4))) - Expect(frame.LargestObserved).To(Equal(uint64(0x03))) + Expect(frame.LargestObserved).To(Equal(protocol.PacketNumber(0x03))) Expect(frame.DelayTime).To(Equal(uint16(0x4523))) Expect(b.Len()).To(Equal(0)) }) @@ -23,7 +24,7 @@ var _ = Describe("AckFrame", func() { b := bytes.NewReader([]byte{0x4C, 0xA4, 0x37, 0x13, 0xAD, 0xFB, 0xCA, 0xDE, 0x23, 0x45, 0x01, 0x02, 0xFF, 0xEE, 0xDD, 0xCC}) frame, err := ParseAckFrame(b) Expect(err).ToNot(HaveOccurred()) - Expect(frame.LargestObserved).To(Equal(uint64(0xDECAFBAD1337))) + Expect(frame.LargestObserved).To(Equal(protocol.PacketNumber(0xDECAFBAD1337))) Expect(b.Len()).To(Equal(0)) }) diff --git a/session.go b/session.go index ed3513b6..e5774662 100644 --- a/session.go +++ b/session.go @@ -80,7 +80,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub s.Entropy.Add(publicHeader.PacketNumber, privateFlag&0x01 > 0) s.SendFrames([]frames.Frame{&frames.AckFrame{ - LargestObserved: uint64(publicHeader.PacketNumber), + LargestObserved: publicHeader.PacketNumber, Entropy: s.Entropy.Get(), }})