mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
HTTP/3: close connection on keepalive_requests * 2.
After receiving GOAWAY, client is not supposed to create new streams. However, until client reads this frame, we allow it to create new streams, which are gracefully rejected. To prevent client from abusing this algorithm, a new limit is introduced. Upon reaching keepalive_requests * 2, server now closes the entire QUIC connection claiming excessive load.
This commit is contained in:
parent
b93ae5d067
commit
e1ad576f96
@ -81,6 +81,15 @@ ngx_http_v3_init(ngx_connection_t *c)
|
||||
|
||||
clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module);
|
||||
|
||||
n = c->quic->id >> 2;
|
||||
|
||||
if (n >= clcf->keepalive_requests * 2) {
|
||||
ngx_http_v3_finalize_connection(c, NGX_HTTP_V3_ERR_EXCESSIVE_LOAD,
|
||||
"too many requests per connection");
|
||||
ngx_http_close_connection(c);
|
||||
return;
|
||||
}
|
||||
|
||||
h3c = ngx_http_v3_get_session(c);
|
||||
|
||||
if (h3c->goaway) {
|
||||
@ -89,8 +98,6 @@ ngx_http_v3_init(ngx_connection_t *c)
|
||||
return;
|
||||
}
|
||||
|
||||
n = c->quic->id >> 2;
|
||||
|
||||
if (n + 1 == clcf->keepalive_requests
|
||||
|| ngx_current_msec - c->quic->parent->start_time
|
||||
> clcf->keepalive_time)
|
||||
|
Loading…
Reference in New Issue
Block a user