projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: FD leak on consumer add relayd socket error
[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 18e60d1efbbe40fb45c678adc149b4e3c366468e..a00fb3c48ab258459de880d3a4720ef9dfd9b0ed 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-239,9
+239,6
@@
void cleanup(void)
/* Close thread quit pipes */
utils_close_pipe(thread_quit_pipe);
/* Close thread quit pipes */
utils_close_pipe(thread_quit_pipe);
- /* Close relay cmd pipes */
- utils_close_pipe(relay_cmd_pipe);
-
uri_free(control_uri);
uri_free(data_uri);
}
uri_free(control_uri);
uri_free(data_uri);
}
@@
-897,7
+894,10
@@
void relay_delete_session(struct relay_command *cmd, struct lttng_ht *streams_ht
stream = caa_container_of(node,
struct relay_stream, stream_n);
if (stream->session == cmd->session) {
stream = caa_container_of(node,
struct relay_stream, stream_n);
if (stream->session == cmd->session) {
- close(stream->fd);
+ ret = close(stream->fd);
+ if (ret < 0) {
+ PERROR("close stream fd on delete session");
+ }
ret = lttng_ht_del(streams_ht, &iter);
assert(!ret);
call_rcu(&stream->rcu_node,
ret = lttng_ht_del(streams_ht, &iter);
assert(!ret);
call_rcu(&stream->rcu_node,
@@
-1058,7
+1058,10
@@
int relay_close_stream(struct lttcomm_relayd_hdr *recv_hdr,
if (close_stream_check(stream)) {
int delret;
if (close_stream_check(stream)) {
int delret;
- close(stream->fd);
+ delret = close(stream->fd);
+ if (delret < 0) {
+ PERROR("close stream");
+ }
delret = lttng_ht_del(streams_ht, &iter);
assert(!delret);
call_rcu(&stream->rcu_node,
delret = lttng_ht_del(streams_ht, &iter);
assert(!delret);
call_rcu(&stream->rcu_node,
@@
-1536,9
+1539,13
@@
int relay_process_data(struct relay_command *cmd, struct lttng_ht *streams_ht)
/* Check if we need to close the FD */
if (close_stream_check(stream)) {
/* Check if we need to close the FD */
if (close_stream_check(stream)) {
+ int cret;
struct lttng_ht_iter iter;
struct lttng_ht_iter iter;
- close(stream->fd);
+ cret = close(stream->fd);
+ if (cret < 0) {
+ PERROR("close stream process data");
+ }
iter.iter.node = &stream->stream_n.node;
ret = lttng_ht_del(streams_ht, &iter);
assert(!ret);
iter.iter.node = &stream->stream_n.node;
ret = lttng_ht_del(streams_ht, &iter);
assert(!ret);
@@
-1813,6
+1820,8
@@
error_poll_create:
streams_ht_error:
lttng_ht_destroy(relay_connections_ht);
relay_connections_ht_error:
streams_ht_error:
lttng_ht_destroy(relay_connections_ht);
relay_connections_ht_error:
+ /* Close relay cmd pipes */
+ utils_close_pipe(relay_cmd_pipe);
if (err) {
DBG("Thread exited with error");
}
if (err) {
DBG("Thread exited with error");
}
This page took
0.025197 seconds
and
4
git commands to generate.