QUIC PORT: Enable injection of incoming URXEs into a channel via default handler rather than DEMUX routing

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22674)
This commit is contained in:
Hugo Landau 2023-11-09 10:27:14 +00:00
parent d743afe7e8
commit 0df897321d
3 changed files with 16 additions and 1 deletions

View File

@ -276,6 +276,8 @@ void ossl_quic_channel_raise_net_error(QUIC_CHANNEL *ch);
/* For use by QUIC_PORT only. */
void ossl_quic_channel_on_stateless_reset(QUIC_CHANNEL *ch);
void ossl_quic_channel_inject(QUIC_CHANNEL *ch, QUIC_URXE *e);
/*
* Queries and Accessors
* =====================

View File

@ -3029,6 +3029,11 @@ static void ch_save_err_state(QUIC_CHANNEL *ch)
OSSL_ERR_STATE_save(ch->err_state);
}
void ossl_quic_channel_inject(QUIC_CHANNEL *ch, QUIC_URXE *e)
{
ossl_qrx_inject_urxe(ch->qrx, e);
}
void ossl_quic_channel_on_stateless_reset(QUIC_CHANNEL *ch)
{
QUIC_TERMINATE_CAUSE tcause = {0};

View File

@ -444,7 +444,15 @@ static void port_default_packet_handler(QUIC_URXE *e, void *arg,
QUIC_PORT *port = arg;
PACKET pkt;
QUIC_PKT_HDR hdr;
QUIC_CHANNEL *new_ch = NULL;
QUIC_CHANNEL *ch = NULL, *new_ch = NULL;
if (dcid != NULL
&& ossl_quic_lcidm_lookup(port->lcidm, dcid, NULL,
(void **)&ch)) {
assert(ch != NULL);
ossl_quic_channel_inject(ch, e);
return;
}
if (port_try_handle_stateless_reset(port, e))
goto undesirable;