@@ -1446,10 +1446,8 @@ var _ = Describe("Session", func() {
1446
1446
1447
1447
It ("sends multiple packets, when the pacer allows immediate sending" , func () {
1448
1448
sph .EXPECT ().SentPacket (gomock .Any ())
1449
- sph .EXPECT ().HasPacingBudget ()
1450
1449
sph .EXPECT ().HasPacingBudget ().Return (true ).AnyTimes ()
1451
- sph .EXPECT ().TimeUntilSend () // return the zero value of time.Time{}
1452
- sph .EXPECT ().SendMode ().Return (ackhandler .SendAny ).Times (3 )
1450
+ sph .EXPECT ().SendMode ().Return (ackhandler .SendAny ).Times (2 )
1453
1451
packer .EXPECT ().PackPacket ().Return (getPacket (10 ), nil )
1454
1452
packer .EXPECT ().PackPacket ().Return (nil , nil )
1455
1453
sender .EXPECT ().WouldBlock ().AnyTimes ()
@@ -1463,6 +1461,23 @@ var _ = Describe("Session", func() {
1463
1461
time .Sleep (50 * time .Millisecond ) // make sure that only 1 packet is sent
1464
1462
})
1465
1463
1464
+ It ("allows an ACK to be sent when pacing limited" , func () {
1465
+ sph .EXPECT ().SentPacket (gomock .Any ())
1466
+ sph .EXPECT ().HasPacingBudget ()
1467
+ sph .EXPECT ().TimeUntilSend ().Return (time .Now ().Add (time .Hour ))
1468
+ sph .EXPECT ().SendMode ().Return (ackhandler .SendAny )
1469
+ packer .EXPECT ().MaybePackAckPacket (gomock .Any ()).Return (getPacket (10 ), nil )
1470
+ sender .EXPECT ().WouldBlock ().AnyTimes ()
1471
+ sender .EXPECT ().Send (gomock .Any ())
1472
+ go func () {
1473
+ defer GinkgoRecover ()
1474
+ cryptoSetup .EXPECT ().RunHandshake ().MaxTimes (1 )
1475
+ sess .run ()
1476
+ }()
1477
+ sess .scheduleSending ()
1478
+ time .Sleep (50 * time .Millisecond ) // make sure that only 1 packet is sent
1479
+ })
1480
+
1466
1481
// when becoming congestion limited, at some point the SendMode will change from SendAny to SendAck
1467
1482
// we shouldn't send the ACK in the same run
1468
1483
It ("doesn't send an ACK right after becoming congestion limited" , func () {
0 commit comments