mirror of
https://github.com/nginx/nginx.git
synced 2025-07-26 07:06:55 +08:00
HTTP/3: fixed Insert With Name Reference index processing.
Based on a patch by Zhiyong Sun.
This commit is contained in:
parent
27a24f4c6b
commit
03fcff287d
@ -159,12 +159,23 @@ ngx_int_t
|
|||||||
ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic,
|
ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic,
|
||||||
ngx_uint_t index, ngx_str_t *value)
|
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) {
|
if (dynamic) {
|
||||||
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
|
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0,
|
||||||
"http3 ref insert dynamic[%ui] \"%V\"", index, value);
|
"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) {
|
if (ngx_http_v3_lookup(c, index, &name, NULL) != NGX_OK) {
|
||||||
return NGX_HTTP_V3_ERR_ENCODER_STREAM_ERROR;
|
return NGX_HTTP_V3_ERR_ENCODER_STREAM_ERROR;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user