forked from quic-go/quic-go
enable packet pacing, for packets sent before handshake completion
It's not clear why this was disabled so far. The pacer should have some allowance for bursts, and it is expected that the handshake flights fit into this burst budget and therefore won't be delayed by the pacer. However, when using 0-RTT, it actually makes sense to start pacing right away, to avoid inducing packet loss very early in the connection.
This commit is contained in:
@@ -1739,7 +1739,7 @@ func (s *connection) sendPackets() error {
|
|||||||
var sentPacket bool // only used in for packets sent in send mode SendAny
|
var sentPacket bool // only used in for packets sent in send mode SendAny
|
||||||
for {
|
for {
|
||||||
sendMode := s.sentPacketHandler.SendMode()
|
sendMode := s.sentPacketHandler.SendMode()
|
||||||
if sendMode == ackhandler.SendAny && s.handshakeComplete && !s.sentPacketHandler.HasPacingBudget() {
|
if sendMode == ackhandler.SendAny && !s.sentPacketHandler.HasPacingBudget() {
|
||||||
deadline := s.sentPacketHandler.TimeUntilSend()
|
deadline := s.sentPacketHandler.TimeUntilSend()
|
||||||
if deadline.IsZero() {
|
if deadline.IsZero() {
|
||||||
deadline = deadlineSendImmediately
|
deadline = deadlineSendImmediately
|
||||||
|
|||||||
@@ -1771,6 +1771,7 @@ var _ = Describe("Connection", func() {
|
|||||||
sph.EXPECT().GetLossDetectionTimeout().AnyTimes()
|
sph.EXPECT().GetLossDetectionTimeout().AnyTimes()
|
||||||
sph.EXPECT().SendMode().Return(ackhandler.SendAny).AnyTimes()
|
sph.EXPECT().SendMode().Return(ackhandler.SendAny).AnyTimes()
|
||||||
sph.EXPECT().TimeUntilSend().Return(time.Now()).AnyTimes()
|
sph.EXPECT().TimeUntilSend().Return(time.Now()).AnyTimes()
|
||||||
|
sph.EXPECT().HasPacingBudget().Return(true).AnyTimes()
|
||||||
gomock.InOrder(
|
gomock.InOrder(
|
||||||
sph.EXPECT().SentPacket(gomock.Any()).Do(func(p *ackhandler.Packet) {
|
sph.EXPECT().SentPacket(gomock.Any()).Do(func(p *ackhandler.Packet) {
|
||||||
Expect(p.EncryptionLevel).To(Equal(protocol.EncryptionInitial))
|
Expect(p.EncryptionLevel).To(Equal(protocol.EncryptionInitial))
|
||||||
|
|||||||
Reference in New Issue
Block a user