summaryrefslogtreecommitdiffhomepage
path: root/src/event/quic/ngx_event_quic_streams.c
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
commit2f754d5dcfe5a7921a86cb3e24e89696437b4555 (patch)
treea983a2aec9e9e827b6f2de3f193e6303dc26940c /src/event/quic/ngx_event_quic_streams.c
parent12bda330d9126f0943ca567b12a716fab2ec7197 (diff)
downloadnginx-2f754d5dcfe5a7921a86cb3e24e89696437b4555.tar.gz
nginx-2f754d5dcfe5a7921a86cb3e24e89696437b4555.tar.bz2
QUIC: refactored OCSP validation in preparation for 0-RTT support.
Diffstat (limited to 'src/event/quic/ngx_event_quic_streams.c')
-rw-r--r--src/event/quic/ngx_event_quic_streams.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/event/quic/ngx_event_quic_streams.c b/src/event/quic/ngx_event_quic_streams.c
index a49117dc9..2ba5ade97 100644
--- a/src/event/quic/ngx_event_quic_streams.c
+++ b/src/event/quic/ngx_event_quic_streams.c
@@ -16,6 +16,7 @@
static ngx_quic_stream_t *ngx_quic_create_client_stream(ngx_connection_t *c,
uint64_t id);
static ngx_int_t ngx_quic_init_stream(ngx_quic_stream_t *qs);
+static void ngx_quic_init_streams_handler(ngx_connection_t *c);
static ngx_quic_stream_t *ngx_quic_create_stream(ngx_connection_t *c,
uint64_t id);
static void ngx_quic_empty_handler(ngx_event_t *ev);
@@ -369,9 +370,38 @@ ngx_quic_init_stream(ngx_quic_stream_t *qs)
}
-void
+ngx_int_t
ngx_quic_init_streams(ngx_connection_t *c)
{
+ ngx_int_t rc;
+ ngx_quic_connection_t *qc;
+
+ qc = ngx_quic_get_connection(c);
+
+ if (qc->streams.initialized) {
+ return NGX_OK;
+ }
+
+ rc = ngx_ssl_ocsp_validate(c);
+
+ if (rc == NGX_ERROR) {
+ return NGX_ERROR;
+ }
+
+ if (rc == NGX_AGAIN) {
+ c->ssl->handler = ngx_quic_init_streams_handler;
+ return NGX_OK;
+ }
+
+ ngx_quic_init_streams_handler(c);
+
+ return NGX_OK;
+}
+
+
+static void
+ngx_quic_init_streams_handler(ngx_connection_t *c)
+{
ngx_queue_t *q;
ngx_quic_stream_t *qs;
ngx_quic_connection_t *qc;