diff --git a/frames/ack_frame.go b/frames/ack_frame.go index e78cb7cd1..a1fda41e2 100644 --- a/frames/ack_frame.go +++ b/frames/ack_frame.go @@ -14,7 +14,6 @@ type AckFrame struct { Entropy byte LargestObserved protocol.PacketNumber DelayTime uint16 // Todo: properly interpret this value as described in the specification - HasNACK bool NackRanges []*ackhandler.NackRange } @@ -31,6 +30,14 @@ func (f *AckFrame) Write(b *bytes.Buffer) error { return nil } +// HasNACK returns if the frame has NACK ranges +func (f *AckFrame) HasNACK() bool { + if len(f.NackRanges) > 0 { + return true + } + return false +} + // ParseAckFrame reads an ACK frame func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { frame := &AckFrame{} @@ -40,9 +47,9 @@ func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { return nil, err } - frame.HasNACK = false + hasNACK := false if typeByte&0x20 == 0x20 { - frame.HasNACK = true + hasNACK = true } if typeByte&0x10 == 0x10 { panic("truncated ACKs not yet implemented.") @@ -105,7 +112,7 @@ func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { } } - if frame.HasNACK { + if hasNACK { var numRanges uint8 numRanges, err = r.ReadByte() if err != nil { diff --git a/frames/ack_frame_test.go b/frames/ack_frame_test.go index 23e260310..67fb15204 100644 --- a/frames/ack_frame_test.go +++ b/frames/ack_frame_test.go @@ -17,7 +17,7 @@ var _ = Describe("AckFrame", func() { Expect(frame.Entropy).To(Equal(byte(0xA4))) Expect(frame.LargestObserved).To(Equal(protocol.PacketNumber(0x03))) Expect(frame.DelayTime).To(Equal(uint16(0x4523))) - Expect(frame.HasNACK).To(Equal(false)) + Expect(frame.HasNACK()).To(Equal(false)) Expect(b.Len()).To(Equal(0)) }) @@ -40,7 +40,7 @@ var _ = Describe("AckFrame", func() { b := bytes.NewReader([]byte{0x60, 0x8, 0x3, 0x72, 0x1, 0x1, 0x0, 0xc0, 0x15, 0x0, 0x0, 0x1, 0x1, 0x1}) frame, err := ParseAckFrame(b) Expect(err).ToNot(HaveOccurred()) - Expect(frame.HasNACK).To(Equal(true)) + Expect(frame.HasNACK()).To(Equal(true)) Expect(len(frame.NackRanges)).To(Equal(1)) Expect(frame.NackRanges[0].FirstPacketNumber).To(Equal(protocol.PacketNumber(1))) Expect(frame.NackRanges[0].Length).To(Equal(uint8(2))) @@ -50,7 +50,7 @@ var _ = Describe("AckFrame", func() { b := bytes.NewReader([]byte{0x60, 0x2, 0xf, 0xb8, 0x1, 0x1, 0x0, 0xe5, 0x58, 0x4, 0x0, 0x3, 0x1, 0x6, 0x1, 0x2, 0x1, 0x0}) frame, err := ParseAckFrame(b) Expect(err).ToNot(HaveOccurred()) - Expect(frame.HasNACK).To(Equal(true)) + Expect(frame.HasNACK()).To(Equal(true)) Expect(len(frame.NackRanges)).To(Equal(3)) Expect(frame.NackRanges[0].FirstPacketNumber).To(Equal(protocol.PacketNumber(8))) Expect(frame.NackRanges[0].Length).To(Equal(uint8(7)))