summaryrefslogtreecommitdiffstats
path: root/ssl
diff options
context:
space:
mode:
authorHugo Landau <hlandau@openssl.org>2023-05-23 12:23:05 +0100
committerPauli <pauli@openssl.org>2023-06-16 09:26:27 +1000
commita3a51d6ec38a8c2fd88e7c64c2f21632e55cbbdf (patch)
tree9137e77960adfbce0c63d39ebbec2ed068eabfea /ssl
parent81b400cf900c530e170a1488222191c5568f6b2d (diff)
QUIC TXP: Refactor status output to use an extensible structure
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21029)
Diffstat (limited to 'ssl')
-rw-r--r--ssl/quic/quic_channel.c6
-rw-r--r--ssl/quic/quic_txp.c19
2 files changed, 13 insertions, 12 deletions
diff --git a/ssl/quic/quic_channel.c b/ssl/quic/quic_channel.c
index 16b52861a8..596dc2c36e 100644
--- a/ssl/quic/quic_channel.c
+++ b/ssl/quic/quic_channel.c
@@ -1640,7 +1640,7 @@ undesirable:
/* Try to generate packets and if possible, flush them to the network. */
static int ch_tx(QUIC_CHANNEL *ch)
{
- int sent_ack_eliciting = 0;
+ QUIC_TXP_STATUS status;
if (ch->state == QUIC_CHANNEL_STATE_TERMINATING_CLOSING) {
/*
@@ -1664,7 +1664,7 @@ static int ch_tx(QUIC_CHANNEL *ch)
*/
switch (ossl_quic_tx_packetiser_generate(ch->txp,
TX_PACKETISER_ARCHETYPE_NORMAL,
- &sent_ack_eliciting)) {
+ &status)) {
case TX_PACKETISER_RES_SENT_PKT:
ch->have_sent_any_pkt = 1; /* Packet was sent */
@@ -1673,7 +1673,7 @@ static int ch_tx(QUIC_CHANNEL *ch)
* sending an ack-eliciting packet if no other ack-eliciting packets
* have been sent since last receiving and processing a packet.'
*/
- if (sent_ack_eliciting && !ch->have_sent_ack_eliciting_since_rx) {
+ if (status.sent_ack_eliciting && !ch->have_sent_ack_eliciting_since_rx) {
ch_update_idle(ch);
ch->have_sent_ack_eliciting_since_rx = 1;
}
diff --git a/ssl/quic/quic_txp.c b/ssl/quic/quic_txp.c
index 24a123d116..8626ac4576 100644
--- a/ssl/quic/quic_txp.c
+++ b/ssl/quic/quic_txp.c
@@ -352,7 +352,7 @@ static int txp_generate_for_el(OSSL_QUIC_TX_PACKETISER *txp, uint32_t enc_level,
int is_last_in_dgram,
int dgram_contains_initial,
int chosen_for_conn_close,
- int *sent_ack_eliciting);
+ QUIC_TXP_STATUS *status);
static size_t txp_determine_pn_len(OSSL_QUIC_TX_PACKETISER *txp);
static int txp_determine_ppl_from_pl(OSSL_QUIC_TX_PACKETISER *txp,
size_t pl,
@@ -368,7 +368,7 @@ static int txp_generate_for_el_actual(OSSL_QUIC_TX_PACKETISER *txp,
size_t pkt_overhead,
QUIC_PKT_HDR *phdr,
int chosen_for_conn_close,
- int *sent_ack_eliciting);
+ QUIC_TXP_STATUS *status);
OSSL_QUIC_TX_PACKETISER *ossl_quic_tx_packetiser_new(const OSSL_QUIC_TX_PACKETISER_ARGS *args)
{
@@ -538,13 +538,15 @@ int ossl_quic_tx_packetiser_has_pending(OSSL_QUIC_TX_PACKETISER *txp,
*/
int ossl_quic_tx_packetiser_generate(OSSL_QUIC_TX_PACKETISER *txp,
uint32_t archetype,
- int *sent_ack_eliciting)
+ QUIC_TXP_STATUS *status)
{
uint32_t enc_level, conn_close_enc_level = QUIC_ENC_LEVEL_NUM;
int have_pkt_for_el[QUIC_ENC_LEVEL_NUM], is_last_in_dgram, cc_can_send;
size_t num_el_in_dgram = 0, pkts_done = 0;
int rc;
+ status->sent_ack_eliciting = 0;
+
/*
* If CC says we cannot send we still may be able to send any queued probes.
*/
@@ -580,7 +582,7 @@ int ossl_quic_tx_packetiser_generate(OSSL_QUIC_TX_PACKETISER *txp,
is_last_in_dgram,
have_pkt_for_el[QUIC_ENC_LEVEL_INITIAL],
enc_level == conn_close_enc_level,
- sent_ack_eliciting);
+ status);
if (rc != TXP_ERR_SUCCESS) {
/*
@@ -934,7 +936,7 @@ static int txp_generate_for_el(OSSL_QUIC_TX_PACKETISER *txp, uint32_t enc_level,
int is_last_in_dgram,
int dgram_contains_initial,
int chosen_for_conn_close,
- int *sent_ack_eliciting)
+ QUIC_TXP_STATUS *status)
{
int must_pad = dgram_contains_initial && is_last_in_dgram;
size_t min_dpl, min_pl, min_ppl, cmpl, cmppl, running_total;
@@ -1047,7 +1049,7 @@ static int txp_generate_for_el(OSSL_QUIC_TX_PACKETISER *txp, uint32_t enc_level,
return txp_generate_for_el_actual(txp, enc_level, archetype, min_ppl, cmppl,
pkt_overhead, &phdr,
chosen_for_conn_close,
- sent_ack_eliciting);
+ status);
}
/* Determine how many bytes we should use for the encoded PN. */
@@ -1896,7 +1898,7 @@ static int txp_generate_for_el_actual(OSSL_QUIC_TX_PACKETISER *txp,
size_t pkt_overhead,
QUIC_PKT_HDR *phdr,
int chosen_for_conn_close,
- int *sent_ack_eliciting)
+ QUIC_TXP_STATUS *status)
{
int rc = TXP_ERR_SUCCESS;
struct archetype_data a;
@@ -2314,8 +2316,7 @@ static int txp_generate_for_el_actual(OSSL_QUIC_TX_PACKETISER *txp,
--probe_info->pto[pn_space];
}
- if (have_ack_eliciting)
- *sent_ack_eliciting = 1;
+ status->sent_ack_eliciting = 1;
/* Done. */
tx_helper_cleanup(&h);