forked from quic-go/quic-go
Merge pull request #1524 from lucas-clemente/fix-ack-after-congestion-limited
don't try to send an ACK immediately after becoming congestion limited
This commit is contained in:
@@ -933,6 +933,12 @@ sendLoop:
|
||||
case ackhandler.SendNone:
|
||||
break sendLoop
|
||||
case ackhandler.SendAck:
|
||||
// If we already sent packets, and the send mode switches to SendAck,
|
||||
// we've just become congestion limited.
|
||||
// There's no need to try to send an ACK at this moment.
|
||||
if numPacketsSent > 0 {
|
||||
return nil
|
||||
}
|
||||
// We can at most send a single ACK only packet.
|
||||
// There will only be a new ACK after receiving new packets.
|
||||
// SendAck is only returned when we're congestion limited, so we don't need to set the pacingt timer.
|
||||
|
||||
@@ -890,6 +890,10 @@ var _ = Describe("Session", func() {
|
||||
sph.EXPECT().TimeUntilSend().Return(time.Now())
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendAny)
|
||||
sph.EXPECT().SendMode().Return(ackhandler.SendAck)
|
||||
rph := mockackhandler.NewMockReceivedPacketHandler(mockCtrl)
|
||||
rph.EXPECT().GetAlarmTimeout().Return(time.Now().Add(time.Hour)).Times(2)
|
||||
rph.EXPECT().GetAckFrame()
|
||||
sess.receivedPacketHandler = rph
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
defer GinkgoRecover()
|
||||
|
||||
Reference in New Issue
Block a user