From 7629e82c6e61f7e5af3c9446699c31d88519e05e Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 6 Oct 2023 15:34:04 +0200 Subject: [PATCH] BUG/MINOR: mux-h1: Send a 400-bad-request on shutdown before the first request Except if we must silently ignore empty connections by enabling http-ignore-probes or dontlognull options, when a client connection is closed before the first request, a 400-bad-request response must be sent with the corresponding log message. However, that is broken since the commit fc473a6453 ("MEDIUM: mux-h1: Rely on the H1C to deal with shutdown for reads"). The bug is subtle. Parsing errors are no longer reported on connection errors before the first request while it should be. This patch must be backported where the above commit is (as far as 2.7). --- src/mux_h1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mux_h1.c b/src/mux_h1.c index c01223a65b391..7405d907d9768 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -3580,7 +3580,7 @@ static int h1_process(struct h1c * h1c) (h1c->state >= H1_CS_CLOSING && (h1c->flags & H1C_F_SILENT_SHUT) && !b_data(&h1c->obuf))) { if (h1c->state != H1_CS_RUNNING) { /* No stream connector or upgrading */ - if (h1c->state < H1_CS_RUNNING && !(h1c->flags & (H1C_F_IS_BACK|H1C_F_ERROR))) { + if (h1c->state < H1_CS_RUNNING && !(h1c->flags & (H1C_F_IS_BACK|H1C_F_ABRT_PENDING))) { /* shutdown for reads and no error on the frontend connection: Send an error */ if (h1_handle_parsing_error(h1c)) h1_send(h1c);