mirror of
https://github.com/nginx/nginx.git
synced 2025-01-19 18:13:01 +08:00
HTTP/2: fixed closed_nodes overflow (ticket #1708).
With large http2_max_concurrent_streams or http2_max_concurrent_pushes, more than 255 ngx_http_v2_node_t structures might be allocated, eventually leading to h2c->closed_nodes overflow when closing corresponding streams. This will in turn result in additional allocations in ngx_http_v2_get_node_by_id(). While mostly harmless, it can result in excessive memory usage by a HTTP/2 connection, notably in configurations with many keepalive_requests allowed. Fix is to use ngx_uint_t for h2c->closed_nodes instead of unsigned:8.
This commit is contained in:
parent
a52433a04c
commit
0a90893da0
@ -153,12 +153,12 @@ struct ngx_http_v2_connection_s {
|
||||
ngx_queue_t dependencies;
|
||||
ngx_queue_t closed;
|
||||
|
||||
ngx_uint_t closed_nodes;
|
||||
ngx_uint_t last_sid;
|
||||
ngx_uint_t last_push;
|
||||
|
||||
time_t lingering_time;
|
||||
|
||||
unsigned closed_nodes:8;
|
||||
unsigned settings_ack:1;
|
||||
unsigned table_update:1;
|
||||
unsigned blocked:1;
|
||||
|
Loading…
Reference in New Issue
Block a user