uint64_t now_us)
{
struct quic_tx_packet *pkt, *tmp, *oldest_lost, *newest_lost;
- uint64_t lost_bytes;
TRACE_ENTER(QUIC_EV_CONN_PRSAFRM, qc);
- lost_bytes = 0;
+ if (LIST_ISEMPTY(pkts))
+ goto leave;
+
oldest_lost = newest_lost = NULL;
list_for_each_entry_safe(pkt, tmp, pkts, list) {
struct list tmp = LIST_HEAD_INIT(tmp);
- lost_bytes += pkt->in_flight_len;
pkt->pktns->tx.in_flight -= pkt->in_flight_len;
qc->path->prep_in_flight -= pkt->in_flight_len;
qc->path->in_flight -= pkt->in_flight_len;
qc->path->cc.algo->slow_start(&qc->path->cc);
}
- if (lost_bytes) {
- quic_tx_packet_refdec(oldest_lost);
- if (newest_lost != oldest_lost)
- quic_tx_packet_refdec(newest_lost);
- }
+ quic_tx_packet_refdec(oldest_lost);
+ if (newest_lost != oldest_lost)
+ quic_tx_packet_refdec(newest_lost);
+ leave:
TRACE_LEAVE(QUIC_EV_CONN_PRSAFRM, qc);
}
if (!LIST_ISEMPTY(&newly_acked_pkts)) {
if (!eb_is_empty(&qel->pktns->tx.pkts)) {
qc_packet_loss_lookup(qel->pktns, qc, &lost_pkts);
- if (!LIST_ISEMPTY(&lost_pkts))
- qc_release_lost_pkts(qc, qel->pktns, &lost_pkts, now_ms);
+ qc_release_lost_pkts(qc, qel->pktns, &lost_pkts, now_ms);
}
qc_treat_newly_acked_pkts(qc, &newly_acked_pkts);
if (quic_peer_validated_addr(qc))
struct list lost_pkts = LIST_HEAD_INIT(lost_pkts);
qc_packet_loss_lookup(pktns, qc, &lost_pkts);
- if (!LIST_ISEMPTY(&lost_pkts))
- qc_release_lost_pkts(qc, pktns, &lost_pkts, now_ms);
+ qc_release_lost_pkts(qc, pktns, &lost_pkts, now_ms);
qc_set_timer(qc);
goto out;
}