cs_detach_app() function is added to detach an app from a conn-stream. And
now, both cs_detach_app() and cs_detach_endp() release the conn-stream when
both the app and the endpoint are detached.
void cs_attach_endp(struct conn_stream *cs, enum obj_type *endp, void *ctx);
int cs_attach_app(struct conn_stream *cs, enum obj_type *app);
void cs_detach_endp(struct conn_stream *cs);
+void cs_detach_app(struct conn_stream *cs);
/*
* Initializes all required fields for a new conn_strema.
appctx_free(appctx);
}
- /* Rest CS */
+ /* FIXME: Rest CS for now but must be reviewed. CS flags are only
+ * connection related for now but this will evolved
+ */
cs->flags = CS_FL_NONE;
cs->end = NULL;
cs->ctx = NULL;
if (cs->si)
cs->si->ops = &si_embedded_ops;
cs->data_cb = NULL;
+
+ if (cs->app == NULL)
+ cs_free(cs);
+}
+
+void cs_detach_app(struct conn_stream *cs)
+{
+ si_free(cs->si);
+ cs->app = NULL;
+ cs->si = NULL;
+ cs->data_cb = NULL;
+
+ if (cs->end == NULL)
+ cs_free(cs);
}