BUG/MEDIUM: stconn: Reset SE descriptor when we fail to create a stream

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.

(cherry picked from commit 3ab72c66a01ca81aa93cf1f0bd29430db8271792)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
This commit is contained in:
Christopher Faulet 2022-09-27 09:18:20 +02:00
parent b3dc43ddad
commit b93ce2eec3

View 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;