}
}
-static inline void quic_pktns_tx_pkts_release(struct quic_pktns *pktns)
+static inline void quic_pktns_tx_pkts_release(struct quic_pktns *pktns, struct quic_conn *qc)
{
struct eb64_node *node;
pkt = eb64_entry(node, struct quic_tx_packet, pn_node);
node = eb64_next(node);
+ if (pkt->flags & QUIC_FL_TX_PACKET_ACK_ELICITING)
+ qc->path->ifae_pkts--;
list_for_each_entry_safe(frm, frmbak, &pkt->frms, list) {
LIST_DELETE(&frm->list);
quic_tx_packet_refdec(frm->pkt);
pktns->tx.loss_time = TICK_ETERNITY;
pktns->tx.pto_probe = 0;
pktns->tx.in_flight = 0;
- quic_pktns_tx_pkts_release(pktns);
+ quic_pktns_tx_pkts_release(pktns, qc);
}
/* Initialize <p> QUIC network path depending on <ipv4> boolean
pool_free(pool_head_quic_tls_secret, app_tls_ctx->tx.secret);
for (i = 0; i < QUIC_TLS_PKTNS_MAX; i++) {
- quic_pktns_tx_pkts_release(&qc->pktns[i]);
+ quic_pktns_tx_pkts_release(&qc->pktns[i], qc);
quic_free_arngs(&qc->pktns[i].rx.arngs);
}