X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fjul-thread.c;h=d8748f2a5aad5e3c246a0016af7bd72e0a43bde6;hb=3a89d11a0ad0ca327e2df99eaf13d3a0c63e3af3;hp=b4a71d79849d36d739020faa6733e1916cfaca76;hpb=5b06ad8b15efa6566f9da15e2b28e681729a603a;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/jul-thread.c b/src/bin/lttng-sessiond/jul-thread.c index b4a71d798..d8748f2a5 100644 --- a/src/bin/lttng-sessiond/jul-thread.c +++ b/src/bin/lttng-sessiond/jul-thread.c @@ -34,7 +34,8 @@ * can let the user define a custom one. However, localhost is ALWAYS the * default listening address. */ -static const char *default_reg_uri = "tcp://localhost"; +static const char *default_reg_uri = + "tcp://" DEFAULT_NETWORK_VIEWER_BIND_ADDRESS; /* * Update JUL application using the given socket. This is done just after @@ -180,12 +181,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 - * 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. */ -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; @@ -230,6 +232,10 @@ static int handle_registration(struct lttcomm_sock *reg_sock) * app and app before JUL. */ + if (r_app) { + *r_app = app; + } + return new_sock->fd; error_socket: @@ -319,16 +325,19 @@ restart: 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); - 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; } + /* 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, @@ -340,6 +349,9 @@ restart: /* 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;