comparison src/http/v3/ngx_http_v3_request.c @ 8707:ffcaf0aad9f2 quic

HTTP/3: limited client header size. The limit is the size of all large client header buffers. Client header size is the total size of all client header names and values.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 17 Feb 2021 11:58:32 +0300
parents 3057bae4dba7
children 265062a99043
comparison
equal deleted inserted replaced
8706:3057bae4dba7 8707:ffcaf0aad9f2
116 if (r->v3_parse == NULL) { 116 if (r->v3_parse == NULL) {
117 ngx_http_close_connection(c); 117 ngx_http_close_connection(c);
118 return; 118 return;
119 } 119 }
120 120
121 r->v3_parse->header_limit = cscf->large_client_header_buffers.size
122 * cscf->large_client_header_buffers.num;
123
121 c->data = r; 124 c->data = r;
122 125
123 rev = c->read; 126 rev = c->read;
124 rev->handler = ngx_http_v3_process_request; 127 rev->handler = ngx_http_v3_process_request;
125 128
259 262
260 static ngx_int_t 263 static ngx_int_t
261 ngx_http_v3_process_header(ngx_http_request_t *r, ngx_str_t *name, 264 ngx_http_v3_process_header(ngx_http_request_t *r, ngx_str_t *name,
262 ngx_str_t *value) 265 ngx_str_t *value)
263 { 266 {
267 size_t len;
264 ngx_table_elt_t *h; 268 ngx_table_elt_t *h;
265 ngx_http_header_t *hh; 269 ngx_http_header_t *hh;
266 ngx_http_core_srv_conf_t *cscf; 270 ngx_http_core_srv_conf_t *cscf;
267 ngx_http_core_main_conf_t *cmcf; 271 ngx_http_core_main_conf_t *cmcf;
272
273 len = name->len + value->len;
274
275 if (len > r->v3_parse->header_limit) {
276 ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
277 "client sent too large header");
278 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_HEADER_TOO_LARGE);
279 return NGX_ERROR;
280 }
281
282 r->v3_parse->header_limit -= len;
268 283
269 if (ngx_http_v3_validate_header(r, name, value) != NGX_OK) { 284 if (ngx_http_v3_validate_header(r, name, value) != NGX_OK) {
270 ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST); 285 ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
271 return NGX_ERROR; 286 return NGX_ERROR;
272 } 287 }