[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