]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: mux-h1: remove the unneeded test on conn->owner in h1s_finish_detach() master flx04/master
authorWilly Tarreau <w@1wt.eu>
Mon, 20 Apr 2026 14:15:27 +0000 (16:15 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 21 Apr 2026 06:45:46 +0000 (08:45 +0200)
There was a test below the "release" label on conn->owner to decide
whether to kill the connection or not. But this test is not needed,
because:
  - for frontends, it's always set so the test never matches
  - for backends, it was NULL on the second stream once a request
    was being reused from an idle pool, so it couldn't be used to
    discriminate between connections. In practice, the goal was to
    try to detect certain dead connections but all cases leading to
    such connections are either already handled in the tests before
    (which don't reach this label), or are handled by the other
    conditions.

Thus, let's remove this confusing test.

src/mux_h1.c

index bcf06635b9372d241ece3fa3d4683a2685a5714a..eaf9f43c87fa63dcf1f3775afc652c11cb94c8be 100644 (file)
@@ -1251,8 +1251,7 @@ static int h1s_finish_detach(struct h1s *h1s)
        /* We don't want to close right now unless the connection is in error or shut down for writes */
        if ((h1c->flags & H1C_F_ERROR) ||
            (h1c->state == H1_CS_CLOSED) ||
-           (h1c->state == H1_CS_CLOSING && !b_data(&h1c->obuf)) ||
-           !h1c->conn->owner) {
+           (h1c->state == H1_CS_CLOSING && !b_data(&h1c->obuf))) {
                TRACE_DEVEL("killing dead connection", H1_EV_STRM_END, h1c->conn);
                h1_release(h1c);
                goto released;