} while (0);
BT_HIDDEN
-bool lttng_live_is_canceled(struct lttng_live_component *lttng_live)
+bool lttng_live_graph_is_canceled(struct lttng_live_component *lttng_live)
{
const bt_component *component;
bool ret;
if (lttng_live_detach_session(session)) {
live_comp = session->lttng_live_msg_iter->lttng_live_comp;
if (session->lttng_live_msg_iter &&
- !lttng_live_is_canceled(live_comp)) {
+ !lttng_live_graph_is_canceled(live_comp)) {
/* Old relayd cannot detach sessions. */
BT_LOGD("Unable to detach lttng live session %" PRIu64,
session->id);
if (!session->attached) {
ret = lttng_live_attach_session(session);
if (ret) {
- if (lttng_live_msg_iter && lttng_live_is_canceled(
+ if (lttng_live_msg_iter && lttng_live_graph_is_canceled(
lttng_live_msg_iter->lttng_live_comp)) {
status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN;
} else {
static
void lttng_live_component_destroy_data(struct lttng_live_component *lttng_live)
{
+ if (!lttng_live) {
+ return;
+ }
if (lttng_live->params.url) {
g_string_free(lttng_live->params.url, TRUE);
}
lttng_live = lttng_live_component_create(params);
if (!lttng_live) {
ret = BT_SELF_COMPONENT_STATUS_NOMEM;
- goto end;
+ goto error;
}
lttng_live->self_comp = self_comp;
- if (lttng_live_is_canceled(lttng_live)) {
- goto end;
+ if (lttng_live_graph_is_canceled(lttng_live)) {
+ ret = BT_SELF_COMPONENT_STATUS_END;
+ goto error;
}
ret = bt_self_component_source_add_output_port(
lttng_live->self_comp, "out",
NULL, NULL);
if (ret != BT_SELF_COMPONENT_STATUS_OK) {
- goto end;
+ goto error;
}
bt_self_component_set_data(
bt_self_component_source_as_self_component(self_comp),
lttng_live);
+ goto end;
+error:
+ lttng_live_component_destroy_data(lttng_live);
+ lttng_live = NULL;
end:
return ret;
}