Mercurial > hg > nginx
changeset 8872:2706d27d2c76 quic
Stream: fixed segfault when using SSL certificates with variables.
Similar to the previous change, a segmentation fault occurres when evaluating
SSL certificates on a QUIC connection due to an uninitialized stream session.
The fix is to adjust initializing the QUIC part of a connection until after
it has session and variables initialized.
Similarly, this appends logging error context for QUIC connections:
- client 127.0.0.1:54749 connected to 127.0.0.1:8880 while handling frames
- quic client timed out (60: Operation timed out) while handling quic input
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 29 Sep 2021 15:06:28 +0300 |
parents | 74b43926b470 |
children | 94daa42ff5ce |
files | src/stream/ngx_stream_handler.c |
diffstat | 1 files changed, 15 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/stream/ngx_stream_handler.c Wed Sep 29 15:01:59 2021 +0300 +++ b/src/stream/ngx_stream_handler.c Wed Sep 29 15:06:28 2021 +0300 @@ -115,23 +115,6 @@ } } -#if (NGX_STREAM_QUIC) - - if (addr_conf->quic) { - ngx_quic_conf_t *qcf; - - if (c->quic == NULL) { - c->log->connection = c->number; - - qcf = ngx_stream_get_module_srv_conf(addr_conf->ctx, - ngx_stream_quic_module); - ngx_quic_run(c, qcf); - return; - } - } - -#endif - s = ngx_pcalloc(c->pool, sizeof(ngx_stream_session_t)); if (s == NULL) { ngx_stream_close_connection(c); @@ -194,6 +177,21 @@ s->start_sec = tp->sec; s->start_msec = tp->msec; +#if (NGX_STREAM_QUIC) + + if (addr_conf->quic) { + ngx_quic_conf_t *qcf; + + if (c->quic == NULL) { + qcf = ngx_stream_get_module_srv_conf(addr_conf->ctx, + ngx_stream_quic_module); + ngx_quic_run(c, qcf); + return; + } + } + +#endif + rev = c->read; rev->handler = ngx_stream_session_handler;