*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <assert.h>
#include <common/common.h>
if (session->ust_session) {
struct agent *agt;
+ rcu_read_lock();
agt = trace_ust_find_agent(session->ust_session, app->domain);
if (agt) {
agent_update(agt, app->sock->fd);
}
+ rcu_read_unlock();
}
session_unlock(session);
}
size = new_sock->ops->recvmsg(new_sock, &msg, sizeof(msg), 0);
if (size < sizeof(msg)) {
- ret = -errno;
+ ret = -EINVAL;
goto error_socket;
}
domain = be32toh(msg.domain);
}
while (1) {
- DBG3("[agent-thread] Manage agent polling on %d fds",
- LTTNG_POLL_GETNB(&events));
+ DBG3("[agent-thread] Manage agent polling");
/* Inifinite blocking call, waiting for transmission */
restart:
ret = lttng_poll_wait(&events, -1);
+ DBG3("[agent-thread] Manage agent return from poll on %d fds",
+ LTTNG_POLL_GETNB(&events));
if (ret < 0) {
/*
* Restart interrupted system call.
revents = LTTNG_POLL_GETEV(&events, i);
pollfd = LTTNG_POLL_GETFD(&events, i);
+ if (!revents) {
+ /* No activity for this FD (poll implementation). */
+ continue;
+ }
+
/* Thread quit pipe has been closed. Killing thread. */
ret = sessiond_check_thread_quit_pipe(pollfd, revents);
if (ret) {