Fix: add globally visible flag in stream
[lttng-tools.git] / src / common / kernel-consumer / kernel-consumer.c
index a6306291af17f153a35c56aa300a4bd51c3ed03b..bdf0eff7c4a2b56a72bdda1f5bd06ea35e213a98 100644 (file)
@@ -370,6 +370,9 @@ int lttng_kconsumer_snapshot_metadata(uint64_t key, char *path,
 
        ret = 0;
 
+       cds_list_del(&metadata_stream->send_node);
+       consumer_stream_destroy(metadata_stream, NULL);
+       metadata_channel->metadata_stream = NULL;
 error:
        rcu_read_unlock();
        return ret;
@@ -556,7 +559,8 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                                channel->session_id,
                                msg.u.stream.cpu,
                                &alloc_ret,
-                               channel->type);
+                               channel->type,
+                               channel->monitor);
                if (new_stream == NULL) {
                        switch (alloc_ret) {
                        case -ENOMEM:
@@ -623,10 +627,13 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                        break;
                }
 
-               ret = consumer_send_relayd_stream(new_stream, NULL);
-               if (ret < 0) {
-                       consumer_stream_free(new_stream);
-                       goto end_nosignal;
+               /* Send stream to relayd if the stream has an ID. */
+               if (new_stream->net_seq_idx != (uint64_t) -1ULL) {
+                       ret = consumer_send_relayd_stream(new_stream, NULL);
+                       if (ret < 0) {
+                               consumer_stream_free(new_stream);
+                               goto end_nosignal;
+                       }
                }
 
                /* Get the right pipe where the stream will be sent. */
@@ -956,11 +963,12 @@ int lttng_kconsumer_on_recv_stream(struct lttng_consumer_stream *stream)
        return 0;
 
 error_close_fd:
-       {
+       if (stream->out_fd >= 0) {
                int err;
 
                err = close(stream->out_fd);
                assert(!err);
+               stream->out_fd = -1;
        }
 error:
        return ret;
This page took 0.023337 seconds and 4 git commands to generate.