X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fhealth-relayd.c;h=3ffb9b75968c7586b28666409579a58774f36488;hp=2e8eb8e483687fc0e677e7953307a8ce973ef721;hb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a;hpb=aa91fbc56d63f8d75661a68b68f4052d3c0dba45 diff --git a/src/bin/lttng-relayd/health-relayd.c b/src/bin/lttng-relayd/health-relayd.c index 2e8eb8e48..3ffb9b759 100644 --- a/src/bin/lttng-relayd/health-relayd.c +++ b/src/bin/lttng-relayd/health-relayd.c @@ -1,18 +1,8 @@ /* - * Copyright (C) 2013 - Mathieu Desnoyers + * Copyright (C) 2013 Mathieu Desnoyers * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, version 2 only, - * as published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _LGPL_SOURCE @@ -250,6 +240,23 @@ end: return ret; } +static +int open_unix_socket(void *data, int *out_fd) +{ + int ret; + const char *path = data; + + ret = lttcomm_create_unix_sock(path); + if (ret < 0) { + goto end; + } + + *out_fd = ret; + ret = 0; +end: + return ret; +} + /* * Thread managing health check socket. */ @@ -261,6 +268,7 @@ void *thread_manage_health(void *data) struct health_comm_msg msg; struct health_comm_reply reply; int is_root; + char *sock_name; DBG("[thread] Manage health check started"); @@ -272,8 +280,17 @@ void *thread_manage_health(void *data) lttng_poll_init(&events); /* Create unix socket */ - sock = lttcomm_create_unix_sock(health_unix_sock_path); - if (sock < 0) { + ret = asprintf(&sock_name, "Unix socket @ %s", health_unix_sock_path); + if (ret == -1) { + PERROR("Failed to allocate unix socket name"); + err = -1; + goto error; + } + ret = fd_tracker_open_unsuspendable_fd(the_fd_tracker, &sock, + (const char **) &sock_name, 1, open_unix_socket, + health_unix_sock_path); + free(sock_name); + if (ret < 0) { ERR("Unable to create health check Unix socket"); err = -1; goto error; @@ -463,7 +480,8 @@ exit: DBG("Health check thread dying"); unlink(health_unix_sock_path); if (sock >= 0) { - ret = close(sock); + ret = fd_tracker_close_unsuspendable_fd(the_fd_tracker, &sock, + 1, fd_tracker_util_close_fd, NULL); if (ret) { PERROR("close"); }