diff options
Diffstat (limited to 'ssl/quic/quic_txp.c')
-rw-r--r-- | ssl/quic/quic_txp.c | 21 |
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. |