Welcome! Log In Create A New Profile

Advanced

[PATCH] HTTP/3: skip empty request body buffers (ticket #2374)

Roman Arutyunyan
August 04, 2022 05:46AM
# HG changeset patch
# User Roman Arutyunyan <arut@nginx.com>
# Date 1659531591 -14400
# Wed Aug 03 16:59:51 2022 +0400
# Branch quic
# Node ID 999e6a73ff50a41bdbce467e9572f4ad52bbf2cf
# Parent f919f13cb11e3bc106e9c4bc2aeadd12b43e7e97
HTTP/3: skip empty request body buffers (ticket #2374).

When client DATA frame header and its content come in different QUIC packets,
it may happen that only the header is processed by the first
ngx_http_v3_request_body_filter() call. In this case an empty request body
buffer is added to r->request_body->bufs, which is later reused in a
subsequent ngx_http_v3_request_body_filter() call without being removed from
the body chain. As a result, rb->request_body->bufs ends up with two copies of
the same buffer.

The fix is to avoid adding empty request body buffers to r->request_body->bufs.

diff --git a/src/http/v3/ngx_http_v3_request.c b/src/http/v3/ngx_http_v3_request.c
--- a/src/http/v3/ngx_http_v3_request.c
+++ b/src/http/v3/ngx_http_v3_request.c
@@ -1552,15 +1552,17 @@ ngx_http_v3_request_body_filter(ngx_http
}

/* rc == NGX_OK */
- }

- if (max != -1 && (uint64_t) (max - rb->received) < st->length) {
- ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
- "client intended to send too large "
- "body: %O+%ui bytes",
- rb->received, st->length);
+ if (max != -1 && (uint64_t) (max - rb->received) < st->length) {
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "client intended to send too large "
+ "body: %O+%ui bytes",
+ rb->received, st->length);

- return NGX_HTTP_REQUEST_ENTITY_TOO_LARGE;
+ return NGX_HTTP_REQUEST_ENTITY_TOO_LARGE;
+ }
+
+ continue;
}

if (b

_______________________________________________
nginx-devel mailing list -- nginx-devel@nginx.org
To unsubscribe send an email to nginx-devel-leave@nginx.org
Subject Author Views Posted

[PATCH] HTTP/3: skip empty request body buffers (ticket #2374)

Roman Arutyunyan 159 August 04, 2022 05:46AM

Re: [PATCH] HTTP/3: skip empty request body buffers (ticket #2374)

Sergey Kandaurov 35 August 04, 2022 10:56AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 86
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready