projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: handle the registration done command for JUL
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
jul-thread.c
diff --git
a/src/bin/lttng-sessiond/jul-thread.c
b/src/bin/lttng-sessiond/jul-thread.c
index b4a71d79849d36d739020faa6733e1916cfaca76..9c924ea40ebfe5c4f721ff099b0b327b149500aa 100644
(file)
--- a/
src/bin/lttng-sessiond/jul-thread.c
+++ b/
src/bin/lttng-sessiond/jul-thread.c
@@
-180,12
+180,13
@@
static void destroy_tcp_socket(struct lttcomm_sock *sock)
/*
* Handle a new JUL registration using the reg socket. After that, a new JUL
* application is added to the global hash table and attach to an UST app
/*
* Handle a new JUL registration using the reg socket. After that, a new JUL
* application is added to the global hash table and attach to an UST app
- * object.
+ * object.
If r_app is not NULL, the created app is set to the pointer.
*
* Return the new FD created upon accept() on success or else a negative errno
* value.
*/
*
* Return the new FD created upon accept() on success or else a negative errno
* value.
*/
-static int handle_registration(struct lttcomm_sock *reg_sock)
+static int handle_registration(struct lttcomm_sock *reg_sock,
+ struct jul_app **r_app)
{
int ret;
pid_t pid;
{
int ret;
pid_t pid;
@@
-230,6
+231,10
@@
static int handle_registration(struct lttcomm_sock *reg_sock)
* app and app before JUL.
*/
* app and app before JUL.
*/
+ if (r_app) {
+ *r_app = app;
+ }
+
return new_sock->fd;
error_socket:
return new_sock->fd;
error_socket:
@@
-319,16
+324,19
@@
restart:
destroy_jul_app(pollfd);
} else if (revents & (LPOLLIN)) {
int new_fd;
destroy_jul_app(pollfd);
} else if (revents & (LPOLLIN)) {
int new_fd;
+ struct jul_app *app = NULL;
/* Pollin event of JUL app socket should NEVER happen. */
assert(pollfd == reg_sock->fd);
/* Pollin event of JUL app socket should NEVER happen. */
assert(pollfd == reg_sock->fd);
- new_fd = handle_registration(reg_sock);
+ new_fd = handle_registration(reg_sock
, &app
);
if (new_fd < 0) {
WARN("[jul-thread] JUL registration failed. Ignoring.");
/* Somehow the communication failed. Just continue. */
continue;
}
if (new_fd < 0) {
WARN("[jul-thread] JUL registration failed. Ignoring.");
/* Somehow the communication failed. Just continue. */
continue;
}
+ /* Should not have a NULL app on success. */
+ assert(app);
/* Only add poll error event to only detect shutdown. */
ret = lttng_poll_add(&events, new_fd,
/* Only add poll error event to only detect shutdown. */
ret = lttng_poll_add(&events, new_fd,
@@
-340,6
+348,9
@@
restart:
/* Update newly registered app. */
update_jul_app(new_fd);
/* Update newly registered app. */
update_jul_app(new_fd);
+
+ /* On failure, the poll will detect it and clean it up. */
+ (void) jul_send_registration_done(app);
} else {
ERR("Unknown poll events %u for sock %d", revents, pollfd);
continue;
} else {
ERR("Unknown poll events %u for sock %d", revents, pollfd);
continue;
This page took
0.023548 seconds
and
4
git commands to generate.