Mercurial > hg > nginx
comparison src/http/v2/ngx_http_v2.c @ 7819:3674d5b7174e
HTTP/2: relaxed PRIORITY frames limit.
Firefox uses several idle streams for PRIORITY frames[1], and
"http2_max_concurrent_streams 1;" results in "client sent too many
PRIORITY frames" errors when a connection is established by Firefox.
Fix is to relax the PRIORITY frames limit to use at least 100 as
the initial value (which is the recommended by the HTTP/2 protocol
minimum limit on the number of concurrent streams, so it is not
unreasonable for clients to assume that similar number of idle streams
can be used for prioritization).
[1] https://hg.mozilla.org/mozilla-central/file/32a9e6e145d6e3071c3993a20bb603a2f388722b/netwerk/protocol/http/Http2Stream.cpp#l1270
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 07 Apr 2021 02:03:29 +0300 |
parents | ade8160120c1 |
children | fdc3d40979b0 |
comparison
equal
deleted
inserted
replaced
7818:e2e9e0fae747 | 7819:3674d5b7174e |
---|---|
275 h2c->frame_size = NGX_HTTP_V2_DEFAULT_FRAME_SIZE; | 275 h2c->frame_size = NGX_HTTP_V2_DEFAULT_FRAME_SIZE; |
276 | 276 |
277 h2scf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_v2_module); | 277 h2scf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_v2_module); |
278 | 278 |
279 h2c->concurrent_pushes = h2scf->concurrent_pushes; | 279 h2c->concurrent_pushes = h2scf->concurrent_pushes; |
280 h2c->priority_limit = h2scf->concurrent_streams; | 280 h2c->priority_limit = ngx_max(h2scf->concurrent_streams, 100); |
281 | 281 |
282 h2c->pool = ngx_create_pool(h2scf->pool_size, h2c->connection->log); | 282 h2c->pool = ngx_create_pool(h2scf->pool_size, h2c->connection->log); |
283 if (h2c->pool == NULL) { | 283 if (h2c->pool == NULL) { |
284 ngx_http_close_connection(c); | 284 ngx_http_close_connection(c); |
285 return; | 285 return; |