[PATCH] Proxy: reset pending control frames on HTTP/2 upstream reinit.
Maxim Dounin
mdounin at mdounin.ru
Fri Feb 20 01:42:23 UTC 2026
Hello!
On Thu, Feb 19, 2026 at 09:32:55AM +0000, David Carlier wrote:
> Previously, ctx->out was not cleared in ngx_http_proxy_v2_reinit_request(),
> which could cause stale HTTP/2 control frames (SETTINGS ACK, PING ACK,
> WINDOW_UPDATE) queued for the old upstream connection to be sent to a new
> upstream connection during a retry.
> ---
> src/http/modules/ngx_http_proxy_v2_module.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/http/modules/ngx_http_proxy_v2_module.c b/src/http/modules/ngx_http_proxy_v2_module.c
> index 2c8a3d4d1..4c282a864 100644
> --- a/src/http/modules/ngx_http_proxy_v2_module.c
> +++ b/src/http/modules/ngx_http_proxy_v2_module.c
> @@ -946,6 +946,7 @@ ngx_http_proxy_v2_reinit_request(ngx_http_request_t *r)
> ctx->connection = NULL;
> ctx->in = NULL;
> ctx->busy = NULL;
> + ctx->out = NULL;
>
> return NGX_OK;
> }
The ngx_http_proxy_v2_module isn't something present in freenginx.
You've probably mean to submit it to F5 NGINX instead.
On the other hand, there is the ngx_http_grpc_module, which
apparently was used as a basis for ngx_http_proxy_v2_module, and
it can suffer from similar issue. If you are interested in
contributing into freenginx, looking into the ngx_http_grpc_module
might be the way to go.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list