Mercurial > hg > nginx
changeset 8785:e6c26cb4d38b quic
HTTP/3: fixed Insert With Name Reference index processing.
Based on a patch by Zhiyong Sun.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 27 May 2021 13:29:00 +0300 |
parents | 7d32c3c93678 |
children | d514f88053e5 |
files | src/http/v3/ngx_http_v3_tables.c |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/v3/ngx_http_v3_tables.c Wed May 26 13:07:06 2021 +0300 +++ b/src/http/v3/ngx_http_v3_tables.c Thu May 27 13:29:00 2021 +0300 @@ -159,12 +159,23 @@ ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic, ngx_uint_t index, ngx_str_t *value) { - ngx_str_t name; + ngx_str_t name; + ngx_http_v3_session_t *h3c; + ngx_http_v3_dynamic_table_t *dt; if (dynamic) { ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, "http3 ref insert dynamic[%ui] \"%V\"", index, value); + h3c = ngx_http_v3_get_session(c); + dt = &h3c->table; + + if (dt->base + dt->nelts <= index) { + return NGX_HTTP_V3_ERR_ENCODER_STREAM_ERROR; + } + + index = dt->base + dt->nelts - 1 - index; + if (ngx_http_v3_lookup(c, index, &name, NULL) != NGX_OK) { return NGX_HTTP_V3_ERR_ENCODER_STREAM_ERROR; }