X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fhealth-relayd.c;h=9b4eefcd55f93e7ad6e9e5e018a398b76fc75f5a;hb=6710e5aab2de1a7e53d4550f07b782c4566f13a5;hp=10a0e5fdffe1b88ab4ae144dcfff87f381b38b1a;hpb=890d8fe47755c3bad936389cf48ffa141cff41c9;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c index 10a0e5fdf..9b4eefcd5 100644 --- a/src/bin/lttng-relayd/health-relayd.c +++ b/src/bin/lttng-relayd/health-relayd.c @@ -37,13 +37,12 @@ #include #include #include -#include #include #include #include -#include -#include +#include +#include #include #include #include @@ -106,8 +105,15 @@ static int create_lttng_rundir_with_perm(const char *rundir) int is_root = !getuid(); if (is_root) { - ret = chown(rundir, 0, - utils_get_group_id(tracing_group_name)); + gid_t gid; + + ret = utils_get_group_id(tracing_group_name, true, &gid); + if (ret) { + /* Default to root group. */ + gid = 0; + } + + ret = chown(rundir, 0, gid); if (ret < 0) { ERR("Unable to set group on %s", rundir); PERROR("chown"); @@ -207,7 +213,7 @@ int setup_health_path(void) } snprintf(health_unix_sock_path, sizeof(health_unix_sock_path), DEFAULT_GLOBAL_RELAY_HEALTH_UNIX_SOCK, - getpid()); + (int) getpid()); } else { /* Set health check Unix path */ if (strlen(health_unix_sock_path) != 0) { @@ -216,7 +222,7 @@ int setup_health_path(void) snprintf(health_unix_sock_path, sizeof(health_unix_sock_path), DEFAULT_HOME_RELAY_HEALTH_UNIX_SOCK, - home_path, getpid()); + home_path, (int) getpid()); } end: @@ -250,19 +256,26 @@ void *thread_manage_health(void *data) sock = lttcomm_create_unix_sock(health_unix_sock_path); if (sock < 0) { ERR("Unable to create health check Unix socket"); - ret = -1; + err = -1; goto error; } is_root = !getuid(); if (is_root) { /* lttng health client socket path permissions */ - ret = chown(health_unix_sock_path, 0, - utils_get_group_id(tracing_group_name)); + gid_t gid; + + ret = utils_get_group_id(tracing_group_name, true, &gid); + if (ret) { + /* Default to root group. */ + gid = 0; + } + + ret = chown(health_unix_sock_path, 0, gid); if (ret < 0) { ERR("Unable to set group on %s", health_unix_sock_path); PERROR("chown"); - ret = -1; + err = -1; goto error; } @@ -271,7 +284,7 @@ void *thread_manage_health(void *data) if (ret < 0) { ERR("Unable to set permissions on %s", health_unix_sock_path); PERROR("chmod"); - ret = -1; + err = -1; goto error; } } @@ -409,8 +422,9 @@ restart: new_sock = -1; } -exit: error: + lttng_relay_stop_threads(); +exit: if (err) { ERR("Health error occurred in %s", __func__); }