projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sessiond: enforce user-exclusive session access in session_access_ok
[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 8415e8cef106db18395a2666c79b555b68d418df..10ce291978227acf5d5e35eb5e623cbba80b82fb 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-230,7
+230,7
@@
static int set_option(int opt, const char *arg, const char *optname)
errno = 0;
v = strtoul(arg, NULL, 0);
errno = 0;
v = strtoul(arg, NULL, 0);
- if (errno != 0 || !isdigit(arg[0])) {
+ if (errno != 0 || !isdigit(
(unsigned char)
arg[0])) {
ERR("Wrong value in --fd-pool-size parameter: %s", arg);
ret = -1;
goto end;
ERR("Wrong value in --fd-pool-size parameter: %s", arg);
ret = -1;
goto end;
@@
-507,7
+507,7
@@
static int set_fd_pool_size(void)
goto end;
}
goto end;
}
- DBG("File descriptor pool size argument (%u) adjusted to %u to accom
odate
transient fd uses",
+ DBG("File descriptor pool size argument (%u) adjusted to %u to accom
modates
transient fd uses",
lttng_opt_fd_pool_size,
lttng_opt_fd_pool_size - DEFAULT_RELAYD_FD_POOL_SIZE_RESERVE);
lttng_opt_fd_pool_size -= DEFAULT_RELAYD_FD_POOL_SIZE_RESERVE;
lttng_opt_fd_pool_size,
lttng_opt_fd_pool_size - DEFAULT_RELAYD_FD_POOL_SIZE_RESERVE);
lttng_opt_fd_pool_size -= DEFAULT_RELAYD_FD_POOL_SIZE_RESERVE;
@@
-917,7
+917,11
@@
static int create_named_thread_poll_set(struct lttng_poll_event *events,
}
ret = fd_tracker_util_poll_create(the_fd_tracker,
}
ret = fd_tracker_util_poll_create(the_fd_tracker,
- name, events, 1, LTTNG_CLOEXEC);
+ name, events, 1, LTTNG_CLOEXEC);
+ if (ret) {
+ PERROR("Failed to create \"%s\" poll file descriptor", name);
+ goto error;
+ }
/* Add quit pipe */
ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR);
/* Add quit pipe */
ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR);
@@
-974,7
+978,7
@@
static int accept_sock(void *data, int *out_fd)
struct lttcomm_sock **socks = data;
struct lttcomm_sock *in_sock = socks[0];
struct lttcomm_sock **socks = data;
struct lttcomm_sock *in_sock = socks[0];
-
socks[1] = in_sock->ops->accept(in_sock);
+ socks[1] = in_sock->ops->accept(in_sock);
if (!socks[1]) {
ret = -1;
goto end;
if (!socks[1]) {
ret = -1;
goto end;
@@
-1018,7
+1022,11
@@
static struct lttcomm_sock *relay_socket_create(struct lttng_uri *uri,
ret = fd_tracker_open_unsuspendable_fd(the_fd_tracker, &sock_fd,
(const char **) (formated_name ? &formated_name : NULL),
1, create_sock, sock);
ret = fd_tracker_open_unsuspendable_fd(the_fd_tracker, &sock_fd,
(const char **) (formated_name ? &formated_name : NULL),
1, create_sock, sock);
- free(formated_name);
+ if (ret) {
+ PERROR("Failed to open \"%s\" relay socket",
+ formated_name ?: "Unknown");
+ goto error;
+ }
DBG("Listening on %s socket %d", name, sock->fd);
ret = sock->ops->bind(sock);
DBG("Listening on %s socket %d", name, sock->fd);
ret = sock->ops->bind(sock);
@@
-1033,12
+1041,14
@@
static struct lttcomm_sock *relay_socket_create(struct lttng_uri *uri,
}
}
+ free(formated_name);
return sock;
error:
if (sock) {
lttcomm_destroy_sock(sock);
}
return sock;
error:
if (sock) {
lttcomm_destroy_sock(sock);
}
+ free(formated_name);
return NULL;
}
return NULL;
}
@@
-1050,7
+1060,7
@@
struct lttcomm_sock *accept_relayd_sock(struct lttcomm_sock *listening_sock,
struct lttcomm_sock *socks[2] = { listening_sock, NULL };
struct lttcomm_sock *new_sock = NULL;
struct lttcomm_sock *socks[2] = { listening_sock, NULL };
struct lttcomm_sock *new_sock = NULL;
-
ret = fd_tracker_open_unsuspendable_fd(
+ ret = fd_tracker_open_unsuspendable_fd(
the_fd_tracker, &out_fd,
(const char **) &name,
1, accept_sock, &socks);
the_fd_tracker, &out_fd,
(const char **) &name,
1, accept_sock, &socks);
@@
-1075,6
+1085,7
@@
static void *relay_thread_listener(void *data)
DBG("[thread] Relay listener started");
DBG("[thread] Relay listener started");
+ rcu_register_thread();
health_register(health_relayd, HEALTH_RELAYD_TYPE_LISTENER);
health_code_update();
health_register(health_relayd, HEALTH_RELAYD_TYPE_LISTENER);
health_code_update();
@@
-1258,6
+1269,7
@@
error_sock_control:
ERR("Health error occurred in %s", __func__);
}
health_unregister(health_relayd);
ERR("Health error occurred in %s", __func__);
}
health_unregister(health_relayd);
+ rcu_unregister_thread();
DBG("Relay listener thread cleanup complete");
lttng_relay_stop_threads();
return NULL;
DBG("Relay listener thread cleanup complete");
lttng_relay_stop_threads();
return NULL;
@@
-1620,7
+1632,8
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
group_by_session_path_name =
backward_compat_group_by_session(
path_name,
group_by_session_path_name =
backward_compat_group_by_session(
path_name,
- session->session_name);
+ session->session_name,
+ session->creation_time.value);
if (!group_by_session_path_name) {
ERR("Failed to apply group by session to stream of session %" PRIu64,
session->id);
if (!group_by_session_path_name) {
ERR("Failed to apply group by session to stream of session %" PRIu64,
session->id);
@@
-2932,7
+2945,7
@@
static int relay_close_trace_chunk(const struct lttcomm_relayd_hdr *recv_hdr,
new_path);
if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
ret = -1;
new_path);
if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
ret = -1;
- goto end;
+ goto end
_unlock_session
;
}
session->ongoing_rotation = false;
}
}
session->ongoing_rotation = false;
}
@@
-2950,7
+2963,7
@@
static int relay_close_trace_chunk(const struct lttcomm_relayd_hdr *recv_hdr,
chunk_status = lttng_trace_chunk_rename_path(chunk, old_path);
if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
ret = -1;
chunk_status = lttng_trace_chunk_rename_path(chunk, old_path);
if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
ret = -1;
- goto end;
+ goto end
_unlock_session
;
}
}
chunk_status = lttng_trace_chunk_set_close_timestamp(
}
}
chunk_status = lttng_trace_chunk_set_close_timestamp(
This page took
0.025637 seconds
and
4
git commands to generate.