Fix: relayd: fully initialize viewer stream before publishing it
[lttng-tools.git] / src / bin / lttng-relayd / viewer-stream.c
index f3baf105bb466dd36f2edd23f69a3a535f21f556..acd488b61846202813e8a7efe07898c1f67cfef7 100644 (file)
@@ -27,7 +27,6 @@
 
 static void viewer_stream_destroy(struct relay_viewer_stream *vstream)
 {
-       lttng_trace_chunk_put(vstream->stream_file.trace_chunk);
        free(vstream->path_name);
        free(vstream->channel_name);
        free(vstream);
@@ -161,9 +160,8 @@ struct relay_viewer_stream *viewer_stream_create(struct relay_stream *stream,
 
        /* Globally visible after the add unique. */
        lttng_ht_node_init_u64(&vstream->stream_n, stream->stream_handle);
-       lttng_ht_add_unique_u64(viewer_streams_ht, &vstream->stream_n);
-
        urcu_ref_init(&vstream->ref);
+       lttng_ht_add_unique_u64(viewer_streams_ht, &vstream->stream_n);
 
        return vstream;
 
@@ -212,7 +210,8 @@ static void viewer_stream_release(struct urcu_ref *ref)
                stream_put(vstream->stream);
                vstream->stream = NULL;
        }
-
+       lttng_trace_chunk_put(vstream->stream_file.trace_chunk);
+       vstream->stream_file.trace_chunk = NULL;
        call_rcu(&vstream->rcu_node, viewer_stream_destroy_rcu);
 }
 
This page took 0.023537 seconds and 4 git commands to generate.