diff src/http/v3/ngx_http_v3_module.c @ 8549:054f9be0aaf9 quic

HTTP/3: http3_max_uni_streams directive. The directive limits the number of uni streams client is allowed to create.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 29 Jul 2021 12:17:56 +0300
parents f0882db8c8d4
children 4f922f611135
line wrap: on
line diff
--- a/src/http/v3/ngx_http_v3_module.c
+++ b/src/http/v3/ngx_http_v3_module.c
@@ -42,6 +42,13 @@ static ngx_command_t  ngx_http_v3_comman
       offsetof(ngx_http_v3_srv_conf_t, max_concurrent_pushes),
       NULL },
 
+    { ngx_string("http3_max_uni_streams"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
+      ngx_conf_set_num_slot,
+      NGX_HTTP_SRV_CONF_OFFSET,
+      offsetof(ngx_http_v3_srv_conf_t, max_uni_streams),
+      NULL },
+
     { ngx_string("http3_push"),
       NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
       ngx_http_v3_push,
@@ -104,6 +111,7 @@ ngx_http_v3_create_srv_conf(ngx_conf_t *
     h3scf->max_table_capacity = NGX_CONF_UNSET_SIZE;
     h3scf->max_blocked_streams = NGX_CONF_UNSET_UINT;
     h3scf->max_concurrent_pushes = NGX_CONF_UNSET_UINT;
+    h3scf->max_uni_streams = NGX_CONF_UNSET_UINT;
 
     return h3scf;
 }
@@ -127,6 +135,10 @@ ngx_http_v3_merge_srv_conf(ngx_conf_t *c
                               prev->max_concurrent_pushes,
                               NGX_HTTP_V3_DEFAULT_MAX_CONCURRENT_PUSHES);
 
+    ngx_conf_merge_uint_value(conf->max_uni_streams,
+                              prev->max_uni_streams,
+                              NGX_HTTP_V3_DEFAULT_MAX_UNI_STREAMS);
+
     return NGX_CONF_OK;
 }