summaryrefslogtreecommitdiffstats
path: root/ssl/quic/quic_txp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ssl/quic/quic_txp.c')
-rw-r--r--ssl/quic/quic_txp.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/ssl/quic/quic_txp.c b/ssl/quic/quic_txp.c
index 1107a0778d..bc017478fe 100644
--- a/ssl/quic/quic_txp.c
+++ b/ssl/quic/quic_txp.c
@@ -2846,20 +2846,23 @@ static int txp_pkt_commit(OSSL_QUIC_TX_PACKETISER *txp,
if (!ossl_quic_fifd_pkt_commit(&txp->fifd, tpkt))
return 0;
- /* Send the packet. */
- if (!ossl_qtx_write_pkt(txp->args.qtx, &txpkt))
- return 0;
-
/*
- * Post-Packet Generation Bookkeeping
- * ==================================
+ * Transmission and Post-Packet Generation Bookkeeping
+ * ===================================================
*
- * No backing out anymore - we have sent the packet and need to record this
- * fact.
+ * No backing out anymore - at this point the ACKM has recorded the packet
+ * as having been sent, so we need to increment our next PN counter, or
+ * the ACKM will complain when we try to record a duplicate packet with
+ * the same PN later. At this point actually sending the packet may still
+ * fail. In this unlikely event it will simply be handled as though it
+ * were a lost packet.
*/
-
++txp->next_pn[pn_space];
+ /* Send the packet. */
+ if (!ossl_qtx_write_pkt(txp->args.qtx, &txpkt))
+ return 0;
+
/*
* Record FC and stream abort frames as sent; deactivate streams which no
* longer have anything to do.