[lttng-dev] [PATCH lttng-tools] Fix: relayd relay_cmd_pipe/thread_quit_pipe should be closed on exit/error.
Christian Babeux
christian.babeux at efficios.com
Fri Jul 20 15:26:47 EDT 2012
Use the utils functions found in common/utils.h on pipes operations
(open/close).
Signed-off-by: Christian Babeux <christian.babeux at efficios.com>
---
src/bin/lttng-relayd/main.c | 57 +++++++++++----------------------------------
1 file changed, 14 insertions(+), 43 deletions(-)
diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c
index bdefd16..795a694 100644
--- a/src/bin/lttng-relayd/main.c
+++ b/src/bin/lttng-relayd/main.c
@@ -49,6 +49,7 @@
#include <common/hashtable/hashtable.h>
#include <common/sessiond-comm/relayd.h>
#include <common/uri.h>
+#include <common/utils.h>
#include "lttng-relayd.h"
@@ -228,18 +229,13 @@ exit:
static
void cleanup(void)
{
- int i, ret;
-
DBG("Cleaning up");
- for (i = 0; i < 2; i++) {
- if (thread_quit_pipe[i] >= 0) {
- ret = close(thread_quit_pipe[i]);
- if (ret) {
- PERROR("close");
- }
- }
- }
+ /* Close thread quit pipes */
+ utils_close_pipe(thread_quit_pipe);
+
+ /* Close relay cmd pipes */
+ utils_close_pipe(relay_cmd_pipe);
}
/*
@@ -351,23 +347,10 @@ int set_signal_handler(void)
static
int init_thread_quit_pipe(void)
{
- int ret, i;
-
- ret = pipe(thread_quit_pipe);
- if (ret < 0) {
- PERROR("thread quit pipe");
- goto error;
- }
+ int ret;
- for (i = 0; i < 2; i++) {
- ret = fcntl(thread_quit_pipe[i], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl");
- goto error;
- }
- }
+ ret = utils_create_pipe_cloexec(thread_quit_pipe);
-error:
return ret;
}
@@ -1444,23 +1427,10 @@ error_poll_create:
*/
static int create_relay_cmd_pipe(void)
{
- int ret, i;
-
- ret = pipe(relay_cmd_pipe);
- if (ret < 0) {
- PERROR("relay cmd pipe");
- goto error;
- }
+ int ret;
- for (i = 0; i < 2; i++) {
- ret = fcntl(relay_cmd_pipe[i], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl relay_cmd_pipe");
- goto error;
- }
- }
+ ret = utils_create_pipe_cloexec(relay_cmd_pipe);
-error:
return ret;
}
@@ -1480,7 +1450,7 @@ int main(int argc, char **argv)
/* Parse arguments */
progname = argv[0];
if ((ret = parse_args(argc, argv) < 0)) {
- goto error;
+ goto exit;
}
if ((ret = set_signal_handler()) < 0) {
@@ -1492,7 +1462,7 @@ int main(int argc, char **argv)
ret = daemon(0, 0);
if (ret < 0) {
PERROR("daemon");
- goto error;
+ goto exit;
}
}
@@ -1503,7 +1473,7 @@ int main(int argc, char **argv)
if (control_uri->port < 1024 || data_uri->port < 1024) {
ERR("Need to be root to use ports < 1024");
ret = -1;
- goto error;
+ goto exit;
}
}
@@ -1568,6 +1538,7 @@ exit:
if (!ret) {
exit(EXIT_SUCCESS);
}
+
error:
exit(EXIT_FAILURE);
}
--
1.7.11.2
More information about the lttng-dev
mailing list