forked from quic-go/quic-go
simplify removing of acked packets from packet history
This commit is contained in:
@@ -271,19 +271,13 @@ func (h *sentPacketHandler) ReceivedAck(ack *wire.AckFrame, encLevel protocol.En
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priorInFlight := h.bytesInFlight
|
||||||
ackedPackets, err := h.determineNewlyAckedPackets(ack, encLevel)
|
ackedPackets, err := h.determineNewlyAckedPackets(ack, encLevel)
|
||||||
if err != nil || len(ackedPackets) == 0 {
|
if err != nil || len(ackedPackets) == 0 {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
priorInFlight := h.bytesInFlight
|
|
||||||
for _, p := range ackedPackets {
|
for _, p := range ackedPackets {
|
||||||
if p.LargestAcked != protocol.InvalidPacketNumber && encLevel == protocol.Encryption1RTT {
|
|
||||||
h.lowestNotConfirmedAcked = utils.MaxPacketNumber(h.lowestNotConfirmedAcked, p.LargestAcked+1)
|
|
||||||
}
|
|
||||||
if err := h.onPacketAcked(p); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if p.includedInBytesInFlight {
|
if p.includedInBytesInFlight {
|
||||||
h.congestion.OnPacketAcked(p.PacketNumber, p.Length, priorInFlight, rcvTime)
|
h.congestion.OnPacketAcked(p.PacketNumber, p.Length, priorInFlight, rcvTime)
|
||||||
}
|
}
|
||||||
@@ -352,6 +346,28 @@ func (h *sentPacketHandler) determineNewlyAckedPackets(
|
|||||||
}
|
}
|
||||||
h.logger.Debugf("\tnewly acked packets (%d): %#x", len(pns), pns)
|
h.logger.Debugf("\tnewly acked packets (%d): %#x", len(pns), pns)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, p := range ackedPackets {
|
||||||
|
if packet := pnSpace.history.GetPacket(p.PacketNumber); packet == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if p.LargestAcked != protocol.InvalidPacketNumber && encLevel == protocol.Encryption1RTT {
|
||||||
|
h.lowestNotConfirmedAcked = utils.MaxPacketNumber(h.lowestNotConfirmedAcked, p.LargestAcked+1)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range p.Frames {
|
||||||
|
if f.OnAcked != nil {
|
||||||
|
f.OnAcked(f.Frame)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if p.includedInBytesInFlight {
|
||||||
|
h.bytesInFlight -= p.Length
|
||||||
|
}
|
||||||
|
if err := pnSpace.history.Remove(p.PacketNumber); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ackedPackets, err
|
return ackedPackets, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -563,23 +579,6 @@ func (h *sentPacketHandler) GetLossDetectionTimeout() time.Time {
|
|||||||
return h.alarm
|
return h.alarm
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *sentPacketHandler) onPacketAcked(p *Packet) error {
|
|
||||||
pnSpace := h.getPacketNumberSpace(p.EncryptionLevel)
|
|
||||||
if packet := pnSpace.history.GetPacket(p.PacketNumber); packet == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, f := range p.Frames {
|
|
||||||
if f.OnAcked != nil {
|
|
||||||
f.OnAcked(f.Frame)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if p.includedInBytesInFlight {
|
|
||||||
h.bytesInFlight -= p.Length
|
|
||||||
}
|
|
||||||
return pnSpace.history.Remove(p.PacketNumber)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *sentPacketHandler) PeekPacketNumber(encLevel protocol.EncryptionLevel) (protocol.PacketNumber, protocol.PacketNumberLen) {
|
func (h *sentPacketHandler) PeekPacketNumber(encLevel protocol.EncryptionLevel) (protocol.PacketNumber, protocol.PacketNumberLen) {
|
||||||
pnSpace := h.getPacketNumberSpace(encLevel)
|
pnSpace := h.getPacketNumberSpace(encLevel)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user