From: Roman Arutyunyan Date: Thu, 20 Aug 2020 09:33:00 +0000 (+0300) Subject: HTTP/3: special handling of client errors in the upstream module. X-Git-Tag: release-1.25.0~4^2~588 X-Git-Url: http://git.kaiwu.me/%7B@url%7D?a=commitdiff_plain;h=5a4aaa6aed4d4b97d09548035298a90bf984a997;p=nginx.git HTTP/3: special handling of client errors in the upstream module. The function ngx_http_upstream_check_broken_connection() terminates the HTTP/1 request if client sends eof. For QUIC (including HTTP/3) the c->write->error flag is now checked instead. This flag is set when the entire QUIC connection is closed or STOP_SENDING was received from client. --- diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index 47f98ccb2..88e7b6fad 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1345,6 +1345,19 @@ ngx_http_upstream_check_broken_connection(ngx_http_request_t *r, } #endif +#if (NGX_HTTP_QUIC) + + if (c->qs) { + if (c->write->error) { + ngx_http_upstream_finalize_request(r, u, + NGX_HTTP_CLIENT_CLOSED_REQUEST); + } + + return; + } + +#endif + #if (NGX_HAVE_KQUEUE) if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {