Mercurial > hg > nginx-quic
comparison src/http/v3/ngx_http_v3_module.c @ 7951:c9538aef3211 quic
HTTP/3: refactored dynamic table implementation.
Previously dynamic table was not functional because of zero limit on its size
set by default. Now the following changes enable it:
- new directives to set SETTINGS_QPACK_MAX_TABLE_CAPACITY and
SETTINGS_QPACK_BLOCKED_STREAMS
- send settings with SETTINGS_QPACK_MAX_TABLE_CAPACITY and
SETTINGS_QPACK_BLOCKED_STREAMS to the client
- send Insert Count Increment to the client
- send Header Acknowledgement to the client
- evict old dynamic table entries on overflow
- decode Required Insert Count from client
- block stream if Required Insert Count is not reached
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 02 Jul 2020 15:34:05 +0300 |
parents | 032cb35ce758 |
children | 0d2b2664b41c |
comparison
equal
deleted
inserted
replaced
7950:b0e81f49d7c0 | 7951:c9538aef3211 |
---|---|
121 { ngx_string("http3_max_field_size"), | 121 { ngx_string("http3_max_field_size"), |
122 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | 122 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
123 ngx_conf_set_size_slot, | 123 ngx_conf_set_size_slot, |
124 NGX_HTTP_SRV_CONF_OFFSET, | 124 NGX_HTTP_SRV_CONF_OFFSET, |
125 offsetof(ngx_http_v3_srv_conf_t, max_field_size), | 125 offsetof(ngx_http_v3_srv_conf_t, max_field_size), |
126 NULL }, | |
127 | |
128 { ngx_string("http3_max_table_capacity"), | |
129 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
130 ngx_conf_set_size_slot, | |
131 NGX_HTTP_SRV_CONF_OFFSET, | |
132 offsetof(ngx_http_v3_srv_conf_t, max_table_capacity), | |
133 NULL }, | |
134 | |
135 { ngx_string("http3_max_blocked_streams"), | |
136 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, | |
137 ngx_conf_set_num_slot, | |
138 NGX_HTTP_SRV_CONF_OFFSET, | |
139 offsetof(ngx_http_v3_srv_conf_t, max_blocked_streams), | |
126 NULL }, | 140 NULL }, |
127 | 141 |
128 ngx_null_command | 142 ngx_null_command |
129 }; | 143 }; |
130 | 144 |
274 v3cf->quic.active_connection_id_limit = NGX_CONF_UNSET_UINT; | 288 v3cf->quic.active_connection_id_limit = NGX_CONF_UNSET_UINT; |
275 | 289 |
276 v3cf->quic.retry = NGX_CONF_UNSET; | 290 v3cf->quic.retry = NGX_CONF_UNSET; |
277 | 291 |
278 v3cf->max_field_size = NGX_CONF_UNSET_SIZE; | 292 v3cf->max_field_size = NGX_CONF_UNSET_SIZE; |
293 v3cf->max_table_capacity = NGX_CONF_UNSET_SIZE; | |
294 v3cf->max_blocked_streams = NGX_CONF_UNSET_UINT; | |
279 | 295 |
280 return v3cf; | 296 return v3cf; |
281 } | 297 } |
282 | 298 |
283 | 299 |
339 } | 355 } |
340 | 356 |
341 ngx_conf_merge_size_value(conf->max_field_size, | 357 ngx_conf_merge_size_value(conf->max_field_size, |
342 prev->max_field_size, | 358 prev->max_field_size, |
343 NGX_HTTP_V3_DEFAULT_MAX_FIELD_SIZE); | 359 NGX_HTTP_V3_DEFAULT_MAX_FIELD_SIZE); |
360 | |
361 ngx_conf_merge_size_value(conf->max_table_capacity, | |
362 prev->max_table_capacity, | |
363 NGX_HTTP_V3_DEFAULT_MAX_TABLE_CAPACITY); | |
364 | |
365 ngx_conf_merge_uint_value(conf->max_blocked_streams, | |
366 prev->max_blocked_streams, | |
367 NGX_HTTP_V3_DEFAULT_MAX_BLOCKED_STREAMS); | |
344 | 368 |
345 return NGX_CONF_OK; | 369 return NGX_CONF_OK; |
346 } | 370 } |
347 | 371 |
348 | 372 |