<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"><meta charset="UTF-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class="Apple-interchange-newline">On 2 Jun 2022, at 17:52, Roman Arutyunyan <<a href="mailto:arut@nginx.com" class="">arut@nginx.com</a>> wrote:<br class=""><br class=""># HG changeset patch<br class=""># User Roman Arutyunyan <<a href="mailto:arut@nginx.com" class="">arut@nginx.com</a>><br class=""># Date 1654177819 -14400<br class="">#      Thu Jun 02 17:50:19 2022 +0400<br class=""># Branch quic<br class=""># Node ID d3857a6df35c7a1d063e1a5776b6392afde16db2<br class=""># Parent  617ec472690620cc75c473f97555138a4bc7d38b<br class="">QUIC: relocated early streams initialization.<br class=""><br class="">Previously, early streams initialization took place right after receiving early<br class="">data keys.  Now it's done after successful decryption of the first early data<br class="">packet.<br class=""><br class="">The changes allows to perform operations in the streams initializer function,<br class="">which require client transport parameters.  An example of such operation is<br class="">creating a server stream.<br class=""><br class="">diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c<br class="">--- a/src/event/quic/ngx_event_quic.c<br class="">+++ b/src/event/quic/ngx_event_quic.c<br class="">@@ -1032,6 +1032,12 @@ ngx_quic_handle_payload(ngx_connection_t<br class="">       return ngx_quic_send_cc(c);<br class="">   }<br class=""><br class="">+    if (pkt->level == ssl_encryption_early_data) {<br class="">+        if (ngx_quic_init_streams(c) != NGX_OK) {<br class="">+            return NGX_ERROR;<br class="">+        }<br class="">+    }<br class="">+<br class="">   pkt->received = ngx_current_msec;<br class=""><br class="">   c->log->action = "handling payload";<br class="">diff --git a/src/event/quic/ngx_event_quic_ssl.c b/src/event/quic/ngx_event_quic_ssl.c<br class="">--- a/src/event/quic/ngx_event_quic_ssl.c<br class="">+++ b/src/event/quic/ngx_event_quic_ssl.c<br class="">@@ -80,12 +80,6 @@ ngx_quic_set_read_secret(ngx_ssl_conn_t<span class="Apple-converted-space"> </span><br class="">       return 0;<br class="">   }<br class=""><br class="">-    if (level == ssl_encryption_early_data) {<br class="">-        if (ngx_quic_init_streams(c) != NGX_OK) {<br class="">-            return 0;<br class="">-        }<br class="">-    }<br class="">-<br class="">   return 1;<br class="">}<br class=""><br class="">@@ -150,14 +144,6 @@ ngx_quic_set_encryption_secrets(ngx_ssl_<br class="">       return 0;<br class="">   }<br class=""><br class="">-    if (level == ssl_encryption_early_data) {<br class="">-        if (ngx_quic_init_streams(c) != NGX_OK) {<br class="">-            return 0;<br class="">-        }<br class="">-<br class="">-        return 1;<br class="">-    }<br class="">-<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;" class="">As discussed in private, it still needs surrounding condition.</span><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;" class="">Otherwise, seems to be good.</span><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">#ifdef NGX_QUIC_DEBUG_CRYPTO<br class="">   ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,<br class="">                  "quic write secret len:%uz %*xs", secret_len,<br class=""><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;" class="">--<span class="Apple-converted-space"> </span></span><br style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline !important; float: none;" class="">Sergey Kandaurov</span></body></html>