X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fkernel-consumer%2Fkernel-consumer.c;h=13cbe2149de6852ed08e6532f6025ff3e382a103;hp=4d61cc506f32e57896b96bf72ee50b91cc3a50b5;hb=e316aad5fbbe3782872083cb68dfdd58bccea811;hpb=5ab7344e564fad002de7efc879ffbed5bd23d5ef diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c index 4d61cc506..13cbe2149 100644 --- a/src/common/kernel-consumer/kernel-consumer.c +++ b/src/common/kernel-consumer/kernel-consumer.c @@ -206,18 +206,20 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, &new_stream->relayd_stream_id); pthread_mutex_unlock(&relayd->ctrl_sock_mutex); if (ret < 0) { + consumer_del_stream(new_stream, NULL); goto end_nosignal; } } else if (msg.u.stream.net_index != -1) { ERR("Network sequence index %d unknown. Not adding stream.", msg.u.stream.net_index); - free(new_stream); + consumer_del_stream(new_stream, NULL); goto end_nosignal; } if (ctx->on_recv_stream) { ret = ctx->on_recv_stream(new_stream); if (ret < 0) { + consumer_del_stream(new_stream, NULL); goto end_nosignal; } } @@ -230,9 +232,16 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, } while (ret < 0 && errno == EINTR); if (ret < 0) { PERROR("write metadata pipe"); + consumer_del_stream(new_stream, NULL); } } else { - consumer_add_stream(new_stream); + ret = consumer_add_stream(new_stream); + if (ret) { + ERR("Consumer add stream %d failed. Continuing", + new_stream->key); + consumer_del_stream(new_stream, NULL); + goto end_nosignal; + } } DBG("Kernel consumer_add_stream (%d)", fd);