[PATCH 2 of 3] QUIC: relocated early streams initialization
Sergey Kandaurov
pluknet at nginx.com
Mon Jun 6 10:43:40 UTC 2022
>
> On 2 Jun 2022, at 17:52, Roman Arutyunyan <arut at nginx.com> wrote:
>
> # HG changeset patch
> # User Roman Arutyunyan <arut at nginx.com>
> # Date 1654177819 -14400
> # Thu Jun 02 17:50:19 2022 +0400
> # Branch quic
> # Node ID d3857a6df35c7a1d063e1a5776b6392afde16db2
> # Parent 617ec472690620cc75c473f97555138a4bc7d38b
> QUIC: relocated early streams initialization.
>
> Previously, early streams initialization took place right after receiving early
> data keys. Now it's done after successful decryption of the first early data
> packet.
>
> The changes allows to perform operations in the streams initializer function,
> which require client transport parameters. An example of such operation is
> creating a server stream.
>
> diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c
> --- a/src/event/quic/ngx_event_quic.c
> +++ b/src/event/quic/ngx_event_quic.c
> @@ -1032,6 +1032,12 @@ ngx_quic_handle_payload(ngx_connection_t
> return ngx_quic_send_cc(c);
> }
>
> + if (pkt->level == ssl_encryption_early_data) {
> + if (ngx_quic_init_streams(c) != NGX_OK) {
> + return NGX_ERROR;
> + }
> + }
> +
> pkt->received = ngx_current_msec;
>
> c->log->action = "handling payload";
> diff --git a/src/event/quic/ngx_event_quic_ssl.c b/src/event/quic/ngx_event_quic_ssl.c
> --- a/src/event/quic/ngx_event_quic_ssl.c
> +++ b/src/event/quic/ngx_event_quic_ssl.c
> @@ -80,12 +80,6 @@ ngx_quic_set_read_secret(ngx_ssl_conn_t
> return 0;
> }
>
> - if (level == ssl_encryption_early_data) {
> - if (ngx_quic_init_streams(c) != NGX_OK) {
> - return 0;
> - }
> - }
> -
> return 1;
> }
>
> @@ -150,14 +144,6 @@ ngx_quic_set_encryption_secrets(ngx_ssl_
> return 0;
> }
>
> - if (level == ssl_encryption_early_data) {
> - if (ngx_quic_init_streams(c) != NGX_OK) {
> - return 0;
> - }
> -
> - return 1;
> - }
> -
As discussed in private, it still needs surrounding condition.
Otherwise, seems to be good.
> #ifdef NGX_QUIC_DEBUG_CRYPTO
> ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
> "quic write secret len:%uz %*xs", secret_len,
>
--
Sergey Kandaurov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20220606/437e5030/attachment.htm>
More information about the nginx-devel
mailing list