From: Roman Arutyunyan Date: Tue, 25 Aug 2020 09:45:21 +0000 (+0300) Subject: HTTP/3: drop the unwanted remainder of the request. X-Git-Url: http://git.kaiwu.me/%7B@url%7D?a=commitdiff_plain;h=693e55a4b232afc6f7b4ba8e25f07decd86baa21;p=nginx.git HTTP/3: drop the unwanted remainder of the request. As per HTTP/3 draft 29, section 4.1: When the server does not need to receive the remainder of the request, it MAY abort reading the request stream, send a complete response, and cleanly close the sending part of the stream. --- diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index 7dbbcceb2..e322fae4b 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -2819,6 +2819,13 @@ ngx_http_finalize_connection(ngx_http_request_t *r) } #endif +#if (NGX_HTTP_QUIC) + if (r->connection->qs) { + ngx_http_close_request(r, 0); + return; + } +#endif + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); if (r->main->count != 1) { diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c index d0fcb00f4..7a9bbdd5d 100644 --- a/src/http/ngx_http_request_body.c +++ b/src/http/ngx_http_request_body.c @@ -579,6 +579,12 @@ ngx_http_discard_request_body(ngx_http_request_t *r) } #endif +#if (NGX_HTTP_QUIC) + if (r->connection->qs) { + return NGX_OK; + } +#endif + if (ngx_http_test_expect(r) != NGX_OK) { return NGX_HTTP_INTERNAL_SERVER_ERROR; }