diff src/http/v2/ngx_http_v2.h @ 7378:e7f19d268c72

HTTP/2: limit the number of idle state switches. An attack that continuously switches HTTP/2 connection between idle and active states can result in excessive CPU usage. This is because when a connection switches to the idle state, all of its memory pool caches are freed. This change limits the maximum allowed number of idle state switches to 10 * http2_max_requests (i.e., 10000 by default). This limits possible CPU usage in one connection, and also imposes a limit on the maximum lifetime of a connection. Initially reported by Gal Goldshtein from F5 Networks.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 06 Nov 2018 16:29:49 +0300
parents d4448892a294
children 99257b06b0bd
line wrap: on
line diff
--- a/src/http/v2/ngx_http_v2.h
+++ b/src/http/v2/ngx_http_v2.h
@@ -121,6 +121,7 @@ struct ngx_http_v2_connection_s {
 
     ngx_uint_t                       processing;
     ngx_uint_t                       frames;
+    ngx_uint_t                       idle;
 
     ngx_uint_t                       pushing;
     ngx_uint_t                       concurrent_pushes;