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.
diff --git a/src/stconn.c b/src/stconn.c
index 36d19b4..3ad075f 100644
--- a/src/stconn.c
+++ b/src/stconn.c
@@ -170,7 +170,9 @@
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;