*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <common/common.h>
#include <common/index/index.h>
vstream->session_id = stream->session_id;
vstream->stream_handle = stream->stream_handle;
vstream->path_name = strndup(stream->path_name, LTTNG_VIEWER_PATH_MAX);
+ if (vstream->path_name == NULL) {
+ PERROR("relay viewer path_name alloc");
+ goto error;
+ }
vstream->channel_name = strndup(stream->channel_name,
LTTNG_VIEWER_NAME_MAX);
+ if (vstream->channel_name == NULL) {
+ PERROR("relay viewer channel_name alloc");
+ goto error;
+ }
vstream->tracefile_count = stream->tracefile_count;
vstream->metadata_flag = stream->metadata_flag;
vstream->tracefile_count_last = -1ULL;
/*
* Rotate a stream to the next tracefile.
*
+ * Must be called with viewer_stream_rotation_lock held.
* Returns 0 on success, 1 on EOF, a negative value on error.
*/
int viewer_stream_rotate(struct relay_viewer_stream *vstream,
goto end;
}
- /*
- * Lock to execute rotation in order to avoid races between a modification
- * on the index values.
- */
- pthread_mutex_lock(&stream->viewer_stream_rotation_lock);
-
/*
* The writer and the reader are not working in the same tracefile, we can
* read up to EOF, we don't care about the total_index_received.
vstream->abort_flag = 0;
pthread_mutex_unlock(&vstream->overwrite_lock);
- pthread_mutex_unlock(&stream->viewer_stream_rotation_lock);
-
ret = index_open(vstream->path_name, vstream->channel_name,
vstream->tracefile_count, vstream->tracefile_count_current);
if (ret < 0) {