forked from quic-go/quic-go
Merge pull request #1331 from lucas-clemente/fix-1330
set the ACK frame delay time when generating the frame
This commit is contained in:
@@ -16,11 +16,7 @@ const ackDelayExponent = 3
|
||||
// An AckFrame is an ACK frame
|
||||
type AckFrame struct {
|
||||
AckRanges []AckRange // has to be ordered. The highest ACK range goes first, the lowest ACK range goes last
|
||||
|
||||
// time when the LargestAcked was receiveid
|
||||
// this field will not be set for received ACKs frames
|
||||
PacketReceivedTime time.Time
|
||||
DelayTime time.Duration
|
||||
DelayTime time.Duration
|
||||
}
|
||||
|
||||
// parseAckFrame reads an ACK frame
|
||||
|
||||
@@ -191,7 +191,6 @@ func (f *AckFrame) writeLegacy(b *bytes.Buffer, _ protocol.VersionNumber) error
|
||||
utils.BigEndian.WriteUint48(b, uint64(largestAcked)&(1<<48-1))
|
||||
}
|
||||
|
||||
f.DelayTime = time.Since(f.PacketReceivedTime)
|
||||
utils.BigEndian.WriteUfloat16(b, uint64(f.DelayTime/time.Microsecond))
|
||||
|
||||
var numRanges uint64
|
||||
|
||||
@@ -498,6 +498,7 @@ var _ = Describe("ACK Frame (for gQUIC)", func() {
|
||||
It("writes a simple ACK frame", func() {
|
||||
frameOrig := &AckFrame{
|
||||
AckRanges: []AckRange{{Smallest: 1, Largest: 1}},
|
||||
DelayTime: 876 * time.Microsecond,
|
||||
}
|
||||
err := frameOrig.Write(b, versionBigEndian)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
@@ -506,6 +507,7 @@ var _ = Describe("ACK Frame (for gQUIC)", func() {
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(frame.LargestAcked()).To(Equal(frameOrig.LargestAcked()))
|
||||
Expect(frame.HasMissingRanges()).To(BeFalse())
|
||||
Expect(frame.DelayTime).To(Equal(frameOrig.DelayTime))
|
||||
Expect(r.Len()).To(BeZero())
|
||||
})
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||
buf := &bytes.Buffer{}
|
||||
f := &AckFrame{
|
||||
AckRanges: []AckRange{{Smallest: 0xdeadbeef, Largest: 0xdeadbeef}},
|
||||
DelayTime: 18 * time.Second,
|
||||
DelayTime: 18 * time.Millisecond,
|
||||
}
|
||||
err := f.Write(buf, versionIETFFrames)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
@@ -160,6 +160,7 @@ var _ = Describe("ACK Frame (for IETF QUIC)", func() {
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(frame).To(Equal(f))
|
||||
Expect(frame.HasMissingRanges()).To(BeFalse())
|
||||
Expect(frame.DelayTime).To(Equal(f.DelayTime))
|
||||
Expect(b.Len()).To(BeZero())
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user