forked from quic-go/quic-go
put STREAM frames back into the pool when they are acknowledged
This commit is contained in:
@@ -5,5 +5,5 @@ import "github.com/lucas-clemente/quic-go/internal/wire"
|
||||
type Frame struct {
|
||||
wire.Frame // nil if the frame has already been acknowledged in another packet
|
||||
OnLost func(wire.Frame)
|
||||
OnAcked func()
|
||||
OnAcked func(wire.Frame)
|
||||
}
|
||||
|
||||
@@ -446,7 +446,7 @@ func (h *sentPacketHandler) onPacketAcked(p *Packet, rcvTime time.Time) error {
|
||||
|
||||
for _, f := range p.Frames {
|
||||
if f.OnAcked != nil {
|
||||
f.OnAcked()
|
||||
f.OnAcked(f.Frame)
|
||||
}
|
||||
}
|
||||
if p.includedInBytesInFlight {
|
||||
|
||||
@@ -202,9 +202,14 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
|
||||
It("calls the OnAcked callback", func() {
|
||||
var acked bool
|
||||
ping := &wire.PingFrame{}
|
||||
handler.SentPacket(ackElicitingPacket(&Packet{
|
||||
PacketNumber: 13,
|
||||
Frames: []Frame{{Frame: &wire.PingFrame{}, OnAcked: func() { acked = true }}},
|
||||
Frames: []Frame{{Frame: ping, OnAcked: func(f wire.Frame) {
|
||||
Expect(f).To(Equal(ping))
|
||||
acked = true
|
||||
},
|
||||
}},
|
||||
}))
|
||||
ack := &wire.AckFrame{AckRanges: []wire.AckRange{{Smallest: 13, Largest: 13}}}
|
||||
Expect(handler.ReceivedAck(ack, 1, protocol.Encryption1RTT, time.Now())).To(Succeed())
|
||||
|
||||
Reference in New Issue
Block a user