projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: leak of event attributes on copy failure
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
main.c
diff --git
a/src/bin/lttng-relayd/main.c
b/src/bin/lttng-relayd/main.c
index fcc7fc00ae55c844b935ef065028e3526c384257..5a3bcb43fbc8aea671e4cc7b0a3c15451522181e 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-1198,6
+1198,7
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
uint64_t stream_handle = -1ULL;
char *path_name = NULL, *channel_name = NULL;
uint64_t tracefile_size = 0, tracefile_count = 0;
uint64_t stream_handle = -1ULL;
char *path_name = NULL, *channel_name = NULL;
uint64_t tracefile_size = 0, tracefile_count = 0;
+ struct relay_stream_chunk_id stream_chunk_id = { 0 };
if (!session || !conn->version_check_done) {
ERR("Trying to add a stream before version check");
if (!session || !conn->version_check_done) {
ERR("Trying to add a stream before version check");
@@
-1216,7
+1217,9
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
} else {
/* From 2.11 to ... */
ret = cmd_recv_stream_2_11(payload, &path_name,
} else {
/* From 2.11 to ... */
ret = cmd_recv_stream_2_11(payload, &path_name,
- &channel_name, &tracefile_size, &tracefile_count);
+ &channel_name, &tracefile_size, &tracefile_count,
+ &stream_chunk_id.value);
+ stream_chunk_id.is_set = true;
}
if (ret < 0) {
}
if (ret < 0) {
@@
-1235,7
+1238,8
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
/* We pass ownership of path_name and channel_name. */
stream = stream_create(trace, stream_handle, path_name,
/* We pass ownership of path_name and channel_name. */
stream = stream_create(trace, stream_handle, path_name,
- channel_name, tracefile_size, tracefile_count);
+ channel_name, tracefile_size, tracefile_count,
+ &stream_chunk_id);
path_name = NULL;
channel_name = NULL;
path_name = NULL;
channel_name = NULL;
@@
-2481,7
+2485,8
@@
static int relay_rotate_session_stream(const struct lttcomm_relayd_hdr *recv_hdr
goto end_stream_unlock;
}
goto end_stream_unlock;
}
- stream->chunk_id = stream_info.new_chunk_id;
+ assert(stream->current_chunk_id.is_set);
+ stream->current_chunk_id.value = stream_info.new_chunk_id;
if (stream->is_metadata) {
/*
if (stream->is_metadata) {
/*
@@
-2815,7
+2820,8
@@
int relay_rotate_pending(const struct lttcomm_relayd_hdr *recv_hdr,
chunk_id = be64toh(msg.chunk_id);
chunk_id = be64toh(msg.chunk_id);
- DBG("Evaluating rotate pending for chunk id %" PRIu64, chunk_id);
+ DBG("Evaluating rotate pending for session \"%s\" and chunk id %" PRIu64,
+ session->session_name, chunk_id);
/*
* Iterate over all the streams in the session and check if they are
/*
* Iterate over all the streams in the session and check if they are
@@
-2837,7
+2843,7
@@
int relay_rotate_pending(const struct lttcomm_relayd_hdr *recv_hdr,
rotate_pending = true;
DBG("Stream %" PRIu64 " is still rotating",
stream->stream_handle);
rotate_pending = true;
DBG("Stream %" PRIu64 " is still rotating",
stream->stream_handle);
- } else if (stream->c
hunk_id
< chunk_id) {
+ } else if (stream->c
urrent_chunk_id.value
< chunk_id) {
/*
* Stream closed on the consumer but still active on the
* relay.
/*
* Stream closed on the consumer but still active on the
* relay.
This page took
0.024271 seconds
and
4
git commands to generate.