diff options
| author | Sergey Kandaurov <pluknet@nginx.com> | 2021-10-26 17:43:10 +0300 |
|---|---|---|
| committer | Sergey Kandaurov <pluknet@nginx.com> | 2021-10-26 17:43:10 +0300 |
| commit | 2f754d5dcfe5a7921a86cb3e24e89696437b4555 (patch) | |
| tree | a983a2aec9e9e827b6f2de3f193e6303dc26940c /src/event/quic/ngx_event_quic_streams.c | |
| parent | 12bda330d9126f0943ca567b12a716fab2ec7197 (diff) | |
| download | nginx-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.c | 32 |
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; |
