mirror of
https://github.com/openssl/openssl.git
synced 2024-12-15 06:01:37 +08:00
QUIC TXP: Add a function to query if the TXP wants to generate a packet
For use by QUIC CSM. Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/19703)
This commit is contained in:
parent
b2c94b9399
commit
04e5226f65
@ -86,6 +86,19 @@ void ossl_quic_tx_packetiser_free(OSSL_QUIC_TX_PACKETISER *txp);
|
||||
int ossl_quic_tx_packetiser_generate(OSSL_QUIC_TX_PACKETISER *txp,
|
||||
uint32_t archetype);
|
||||
|
||||
/*
|
||||
* Returns 1 if one or more packets would be generated if
|
||||
* ossl_quic_tx_packetiser_generate were called.
|
||||
*
|
||||
* If TX_PACKETISER_BYPASS_CC is set in flags, congestion control is
|
||||
* ignored for the purposes of making this determination.
|
||||
*/
|
||||
#define TX_PACKETISER_BYPASS_CC (1U << 0)
|
||||
|
||||
int ossl_quic_tx_packetiser_has_pending(OSSL_QUIC_TX_PACKETISER *txp,
|
||||
uint32_t archetype,
|
||||
uint32_t flags);
|
||||
|
||||
/*
|
||||
* Set the token used in Initial packets. The callback is called when the buffer
|
||||
* is no longer needed; for example, when the TXP is freed or when this function
|
||||
|
@ -460,6 +460,25 @@ void ossl_quic_tx_packetiser_schedule_ack_eliciting(OSSL_QUIC_TX_PACKETISER *txp
|
||||
#define TXP_ERR_SPACE 2 /* Not enough room for another packet */
|
||||
#define TXP_ERR_INPUT 3 /* Invalid/malformed input */
|
||||
|
||||
int ossl_quic_tx_packetiser_has_pending(OSSL_QUIC_TX_PACKETISER *txp,
|
||||
uint32_t archetype,
|
||||
uint32_t flags)
|
||||
{
|
||||
uint32_t enc_level;
|
||||
int bypass_cc = ((flags & TX_PACKETISER_BYPASS_CC) != 0);
|
||||
|
||||
if (!bypass_cc && !txp->args.cc_method->can_send(txp->args.cc_data))
|
||||
return 0;
|
||||
|
||||
for (enc_level = QUIC_ENC_LEVEL_INITIAL;
|
||||
enc_level < QUIC_ENC_LEVEL_NUM;
|
||||
++enc_level)
|
||||
if (txp_el_pending(txp, enc_level, archetype))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generates a datagram by polling the various ELs to determine if they want to
|
||||
* generate any frames, and generating a datagram which coalesces packets for
|
||||
|
Loading…
Reference in New Issue
Block a user