]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: stconn: Reset SE descriptor when we fail to create a stream
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 27 Sep 2022 07:18:20 +0000 (09:18 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 27 Sep 2022 09:18:11 +0000 (11:18 +0200)
If stream_new() fails after the frontend SC is attached, the underlying SE
descriptor is not properly reset. Among other things, SE_FL_ORPHAN flag is
not set again. Because of this error, a BUG_ON() is triggered when the mux
stream on the frontend side is destroyed.

Thus, now, when stream_new() fails, SE_FL_ORPHAN flag is set on the SE
descriptor and its stream-connector is set to NULL.

This patch should solve the issue #1880. It must be backported to 2.6.

src/stconn.c

index 36d19b46fea4821e71d77a49a22b65ee584826d6..3ad075ffd4ed61695ac5996b98c706bb4099aefe 100644 (file)
@@ -170,7 +170,9 @@ struct stconn *sc_new_from_endp(struct sedesc *sd, struct session *sess, struct
                return NULL;
        if (unlikely(!stream_new(sess, sc, input))) {
                pool_free(pool_head_connstream, sc);
-               sc = NULL;
+               sd->sc = NULL;
+               se_fl_set(sd, SE_FL_ORPHAN);
+               return NULL;
        }
        se_fl_clr(sd, SE_FL_ORPHAN);
        return sc;