projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use common functions for module loading and unloading
[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 c1df1d86282485c4166d17fa7191eaa14b1e2343..9859a1071b31adf7c408a4937cb7a53939042300 100644
(file)
--- a/
src/bin/lttng-sessiond/jul-thread.c
+++ b/
src/bin/lttng-sessiond/jul-thread.c
@@
-23,6
+23,8
@@
#include <common/uri.h>
#include <common/utils.h>
#include <common/uri.h>
#include <common/utils.h>
+#include <common/compat/endian.h>
+
#include "fd-limit.h"
#include "jul-thread.h"
#include "lttng-sessiond.h"
#include "fd-limit.h"
#include "jul-thread.h"
#include "lttng-sessiond.h"
@@
-34,7
+36,8
@@
* can let the user define a custom one. However, localhost is ALWAYS the
* default listening address.
*/
* 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
/*
* Update JUL application using the given socket. This is done just after
@@
-141,6
+144,8
@@
static struct lttcomm_sock *init_tcp_socket(void)
ret = sock->ops->bind(sock);
if (ret < 0) {
ret = sock->ops->bind(sock);
if (ret < 0) {
+ WARN("Another session daemon is using this JUL port. JUL support "
+ "will be deactivated to prevent interfering with the tracing.");
goto error;
}
goto error;
}
@@
-178,12
+183,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;
@@
-228,6
+234,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:
@@
-317,16
+327,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,
@@
-338,6
+351,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.024955 seconds
and
4
git commands to generate.