From 64ef72fd68b0cfe3477b5ef3c3e82748359b73ac Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 31 May 2020 10:47:13 +0700 Subject: [PATCH] don't switch to PTO mode after early retransmit --- internal/ackhandler/sent_packet_handler.go | 1 + internal/ackhandler/sent_packet_handler_test.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/internal/ackhandler/sent_packet_handler.go b/internal/ackhandler/sent_packet_handler.go index 007c35ce..584e7ef2 100644 --- a/internal/ackhandler/sent_packet_handler.go +++ b/internal/ackhandler/sent_packet_handler.go @@ -603,6 +603,7 @@ func (h *sentPacketHandler) onVerifiedLossDetectionTimeout() error { for _, p := range lostPackets { h.congestion.OnPacketLost(p.PacketNumber, p.Length, priorInFlight) } + return nil } // PTO diff --git a/internal/ackhandler/sent_packet_handler_test.go b/internal/ackhandler/sent_packet_handler_test.go index 915ce24c..1117a310 100644 --- a/internal/ackhandler/sent_packet_handler_test.go +++ b/internal/ackhandler/sent_packet_handler_test.go @@ -913,6 +913,7 @@ var _ = Describe("SentPacketHandler", func() { }) It("sets the early retransmit alarm", func() { + handler.ReceivedPacket(protocol.EncryptionHandshake) handler.handshakeComplete = true now := time.Now() handler.SentPacket(ackElicitingPacket(&Packet{PacketNumber: 1, SendTime: now.Add(-2 * time.Second)})) @@ -926,12 +927,16 @@ var _ = Describe("SentPacketHandler", func() { // Packet 1 should be considered lost (1+1/8) RTTs after it was sent. Expect(handler.GetLossDetectionTimeout().Sub(getPacket(1, protocol.Encryption1RTT).SendTime)).To(Equal(time.Second * 9 / 8)) + Expect(handler.SendMode()).To(Equal(SendAny)) + expectInPacketHistory([]protocol.PacketNumber{1, 3}, protocol.Encryption1RTT) Expect(handler.OnLossDetectionTimeout()).To(Succeed()) expectInPacketHistory([]protocol.PacketNumber{3}, protocol.Encryption1RTT) + Expect(handler.SendMode()).To(Equal(SendAny)) }) It("sets the early retransmit alarm for crypto packets", func() { + handler.ReceivedBytes(1000) now := time.Now() handler.SentPacket(initialPacket(&Packet{PacketNumber: 1, SendTime: now.Add(-2 * time.Second)})) handler.SentPacket(initialPacket(&Packet{PacketNumber: 2, SendTime: now.Add(-2 * time.Second)})) @@ -944,9 +949,12 @@ var _ = Describe("SentPacketHandler", func() { // Packet 1 should be considered lost (1+1/8) RTTs after it was sent. Expect(handler.GetLossDetectionTimeout().Sub(getPacket(1, protocol.EncryptionInitial).SendTime)).To(Equal(time.Second * 9 / 8)) + Expect(handler.SendMode()).To(Equal(SendAny)) + expectInPacketHistory([]protocol.PacketNumber{1, 3}, protocol.EncryptionInitial) Expect(handler.OnLossDetectionTimeout()).To(Succeed()) expectInPacketHistory([]protocol.PacketNumber{3}, protocol.EncryptionInitial) + Expect(handler.SendMode()).To(Equal(SendAny)) }) })