* 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;
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 {
- ret = index_write(stream->index_fd, index,
- sizeof(struct lttng_packet_index));
+ ssize_t size_ret;
+
+ size_ret = index_write(stream->index_fd, index,
+ sizeof(struct ctf_packet_index));
+ if (size_ret < sizeof(struct ctf_packet_index)) {
+ ret = -1;
+ } else {
+ ret = 0;
+ }
}
if (ret < 0) {
goto error;