From 215ba85db4df1d499923028afe1feb6bcae0d9fd Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 2 Jun 2023 12:59:46 +0300 Subject: [PATCH] ackhandler: simplify sentPacketHandler.SentPacket (#3847) No functional change expected. --- internal/ackhandler/sent_packet_handler.go | 51 ++++++++++------------ 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/internal/ackhandler/sent_packet_handler.go b/internal/ackhandler/sent_packet_handler.go index 732bbc3a1..550dc74dc 100644 --- a/internal/ackhandler/sent_packet_handler.go +++ b/internal/ackhandler/sent_packet_handler.go @@ -234,11 +234,31 @@ func (h *sentPacketHandler) SentPacket(p *Packet) { if h.perspective == protocol.PerspectiveClient && p.EncryptionLevel == protocol.EncryptionHandshake && h.initialPackets != nil { h.dropPackets(protocol.EncryptionInitial) } - isAckEliciting := h.sentPacketImpl(p) + + pnSpace := h.getPacketNumberSpace(p.EncryptionLevel) + if h.logger.Debug() && pnSpace.history.HasOutstandingPackets() { + for pn := utils.Max(0, pnSpace.largestSent+1); pn < p.PacketNumber; pn++ { + h.logger.Debugf("Skipping packet number %d", pn) + } + } + + pnSpace.largestSent = p.PacketNumber + isAckEliciting := len(p.Frames) > 0 + if isAckEliciting { - h.getPacketNumberSpace(p.EncryptionLevel).history.SentAckElicitingPacket(p) + pnSpace.lastAckElicitingPacketTime = p.SendTime + p.includedInBytesInFlight = true + h.bytesInFlight += p.Length + if h.numProbesToSend > 0 { + h.numProbesToSend-- + } + } + h.congestion.OnPacketSent(p.SendTime, h.bytesInFlight, p.PacketNumber, p.Length, isAckEliciting) + + if isAckEliciting { + pnSpace.history.SentAckElicitingPacket(p) } else { - h.getPacketNumberSpace(p.EncryptionLevel).history.SentNonAckElicitingPacket(p.PacketNumber, p.EncryptionLevel, p.SendTime) + pnSpace.history.SentNonAckElicitingPacket(p.PacketNumber, p.EncryptionLevel, p.SendTime) putPacket(p) p = nil //nolint:ineffassign // This is just to be on the safe side. } @@ -263,31 +283,6 @@ func (h *sentPacketHandler) getPacketNumberSpace(encLevel protocol.EncryptionLev } } -func (h *sentPacketHandler) sentPacketImpl(packet *Packet) bool /* is ack-eliciting */ { - pnSpace := h.getPacketNumberSpace(packet.EncryptionLevel) - - if h.logger.Debug() && pnSpace.history.HasOutstandingPackets() { - for p := utils.Max(0, pnSpace.largestSent+1); p < packet.PacketNumber; p++ { - h.logger.Debugf("Skipping packet number %d", p) - } - } - - pnSpace.largestSent = packet.PacketNumber - isAckEliciting := len(packet.Frames) > 0 - - if isAckEliciting { - pnSpace.lastAckElicitingPacketTime = packet.SendTime - packet.includedInBytesInFlight = true - h.bytesInFlight += packet.Length - if h.numProbesToSend > 0 { - h.numProbesToSend-- - } - } - h.congestion.OnPacketSent(packet.SendTime, h.bytesInFlight, packet.PacketNumber, packet.Length, isAckEliciting) - - return isAckEliciting -} - func (h *sentPacketHandler) ReceivedAck(ack *wire.AckFrame, encLevel protocol.EncryptionLevel, rcvTime time.Time) (bool /* contained 1-RTT packet */, error) { pnSpace := h.getPacketNumberSpace(encLevel)