BUG/MEDIUM: mux-h1: Disable 0-copy forwarding when draining the request

When an early response is sent to the client and the H1 connection is
switched to the draining state, we must take care to disable the 0-copy data
forwarding because the backend side is no longer here. It is an issue
because this prevent any regular receive to be performed.

This patch should fix the issue #3316. It must be backported as far as 3.0.
This commit is contained in:
Christopher Faulet 2026-04-03 15:12:54 +02:00
parent 8056117e98
commit c010c3924a

View File

@ -4672,6 +4672,7 @@ static void h1_detach(struct sedesc *sd)
if (h1c->state == H1_CS_RUNNING && !(h1c->flags & H1C_F_IS_BACK) && h1s->req.state != H1_MSG_DONE) {
h1c->state = H1_CS_DRAINING;
h1c->flags &= ~H1C_F_WANT_FASTFWD;
h1c_report_term_evt(h1c, muxc_tevt_type_graceful_shut);
COUNT_IF(1, "Deferring H1S destroy to drain message");
TRACE_DEVEL("Deferring H1S destroy to drain message", H1_EV_STRM_END, h1s->h1c->conn, h1s);