Previously, streams were initialized in early keys handler. However, client
transport parameters may not be available by then. This happens, for example,
when using QuicTLS. Now streams are initialized in ngx_quic_crypto_input()
after calling SSL_do_handshake() for both 0-RTT and 1-RTT.
return 0;
}
- if (level == ssl_encryption_early_data) {
- if (ngx_quic_init_streams(c) != NGX_OK) {
- return 0;
- }
- }
-
return 1;
}
}
if (level == ssl_encryption_early_data) {
- if (ngx_quic_init_streams(c) != NGX_OK) {
- return 0;
- }
-
return 1;
}
qc->error_reason = "handshake failed";
return NGX_ERROR;
}
-
- return NGX_OK;
}
- if (SSL_in_init(ssl_conn)) {
+ if (n <= 0 || SSL_in_init(ssl_conn)) {
+ if (ngx_quic_keys_available(qc->keys, ssl_encryption_early_data)
+ && qc->client_tp_done)
+ {
+ if (ngx_quic_init_streams(c) != NGX_OK) {
+ return NGX_ERROR;
+ }
+ }
+
return NGX_OK;
}