aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-10-26 17:43:10 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-10-26 17:43:10 +0300
commit01d27365c6b0abbced06c2669072e6568a4e1cb6 (patch)
treec0950a670b1274858bf33e2649b3fef48c7bf6dc /src
parent2f754d5dcfe5a7921a86cb3e24e89696437b4555 (diff)
downloadnginx-01d27365c6b0abbced06c2669072e6568a4e1cb6.tar.gz
nginx-01d27365c6b0abbced06c2669072e6568a4e1cb6.zip
QUIC: speeding up processing 0-RTT.
After fe919fd63b0b, processing QUIC streams was postponed until after handshake completion, which means that 0-RTT is effectively off. With ssl_ocsp enabled, it could be further delayed. This differs from how OCSP validation works with SSL_read_early_data(). With this change, processing QUIC streams is unlocked when obtaining 0-RTT secret.
Diffstat (limited to 'src')
-rw-r--r--src/event/quic/ngx_event_quic_ssl.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/event/quic/ngx_event_quic_ssl.c b/src/event/quic/ngx_event_quic_ssl.c
index bcee112e0..8899bc626 100644
--- a/src/event/quic/ngx_event_quic_ssl.c
+++ b/src/event/quic/ngx_event_quic_ssl.c
@@ -71,8 +71,20 @@ ngx_quic_set_read_secret(ngx_ssl_conn_t *ssl_conn,
secret_len, rsecret);
#endif
- return ngx_quic_keys_set_encryption_secret(c->pool, 0, qc->keys, level,
- cipher, rsecret, secret_len);
+ if (ngx_quic_keys_set_encryption_secret(c->pool, 0, qc->keys, level,
+ cipher, rsecret, secret_len)
+ != 1)
+ {
+ return 0;
+ }
+
+ if (level == ssl_encryption_early_data) {
+ if (ngx_quic_init_streams(c) != NGX_OK) {
+ return 0;
+ }
+ }
+
+ return 1;
}
@@ -131,6 +143,10 @@ ngx_quic_set_encryption_secrets(ngx_ssl_conn_t *ssl_conn,
}
if (level == ssl_encryption_early_data) {
+ if (ngx_quic_init_streams(c) != NGX_OK) {
+ return 0;
+ }
+
return 1;
}