Fix: don't expose empty streams
[lttng-tools.git] / src / bin / lttng-relayd / main.c
index 057ac4046c01e67ae05fa938db49e89c9c913718..adb044f1d3ebd4b6b6d58a035c6e4d9eece706b9 100644 (file)
@@ -2146,6 +2146,7 @@ static int relay_process_data(struct relay_connection *conn)
        uint64_t net_seq_num;
        uint32_t data_size;
        struct relay_session *session;
        uint64_t net_seq_num;
        uint32_t data_size;
        struct relay_session *session;
+       bool new_stream = false;
 
        ret = conn->sock->ops->recvmsg(conn->sock, &data_hdr,
                        sizeof(struct lttcomm_relayd_data_hdr), 0);
 
        ret = conn->sock->ops->recvmsg(conn->sock, &data_hdr,
                        sizeof(struct lttcomm_relayd_data_hdr), 0);
@@ -2269,10 +2270,19 @@ static int relay_process_data(struct relay_connection *conn)
        }
        stream->tracefile_size_current +=
                        data_size + be32toh(data_hdr.padding_size);
        }
        stream->tracefile_size_current +=
                        data_size + be32toh(data_hdr.padding_size);
+       if (stream->prev_seq == -1ULL) {
+               new_stream = true;
+       }
+
        stream->prev_seq = net_seq_num;
 
 end_stream_unlock:
        pthread_mutex_unlock(&stream->lock);
        stream->prev_seq = net_seq_num;
 
 end_stream_unlock:
        pthread_mutex_unlock(&stream->lock);
+       if (new_stream) {
+               pthread_mutex_lock(&session->lock);
+               uatomic_set(&session->new_streams, 1);
+               pthread_mutex_unlock(&session->lock);
+       }
 end_stream_put:
        stream_put(stream);
 end:
 end_stream_put:
        stream_put(stream);
 end:
This page took 0.023395 seconds and 4 git commands to generate.