Fix: missing lock/unlock when sending index
[lttng-tools.git] / src / common / consumer-stream.c
index 063ba50ab12eb968e4ee81c4f49cadefcb7f3d90..745de050d6dd4f7c805d37ec2f1221092fed17ac 100644 (file)
@@ -331,7 +331,7 @@ void consumer_stream_destroy(struct lttng_consumer_stream *stream,
  * Return 0 on success or else a negative value.
  */
 int consumer_stream_write_index(struct lttng_consumer_stream *stream,
-               struct lttng_packet_index *index)
+               struct ctf_packet_index *index)
 {
        int ret;
        struct consumer_relayd_sock_pair *relayd;
@@ -342,14 +342,16 @@ int consumer_stream_write_index(struct lttng_consumer_stream *stream,
        rcu_read_lock();
        relayd = consumer_find_relayd(stream->net_seq_idx);
        if (relayd) {
+               pthread_mutex_lock(&relayd->ctrl_sock_mutex);
                ret = relayd_send_index(&relayd->control_sock, index,
                                stream->relayd_stream_id, stream->next_net_seq_num - 1);
+               pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
        } else {
                ssize_t size_ret;
 
                size_ret = index_write(stream->index_fd, index,
-                               sizeof(struct lttng_packet_index));
-               if (size_ret < sizeof(struct lttng_packet_index)) {
+                               sizeof(struct ctf_packet_index));
+               if (size_ret < sizeof(struct ctf_packet_index)) {
                        ret = -1;
                } else {
                        ret = 0;
This page took 0.025693 seconds and 5 git commands to generate.