projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: honor base path for network URIs
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
session.c
diff --git
a/src/bin/lttng-sessiond/session.c
b/src/bin/lttng-sessiond/session.c
index 6e187f2ff51df9c17fb162f0096e7e6a92d7a372..2a7b8b83bb8d643ecdfcfdbd3c1364e69b562b10 100644
(file)
--- a/
src/bin/lttng-sessiond/session.c
+++ b/
src/bin/lttng-sessiond/session.c
@@
-802,11
+802,10
@@
void session_release(struct urcu_ref *ref)
usess = session->ust_session;
ksess = session->kernel_session;
usess = session->ust_session;
ksess = session->kernel_session;
- /* Clean kernel session teardown */
+ /* Clean kernel session teardown
, keeping data for destroy notifier.
*/
kernel_destroy_session(ksess);
kernel_destroy_session(ksess);
- session->kernel_session = NULL;
- /* UST session teardown */
+ /* UST session teardown
, keeping data for destroy notifier.
*/
if (usess) {
/* Close any relayd session */
consumer_output_send_destroy_relayd(usess->consumer);
if (usess) {
/* Close any relayd session */
consumer_output_send_destroy_relayd(usess->consumer);
@@
-817,9
+816,8
@@
void session_release(struct urcu_ref *ref)
ERR("Error in ust_app_destroy_trace_all");
}
ERR("Error in ust_app_destroy_trace_all");
}
- /* Clean up the rest. */
+ /* Clean up the rest
, keeping destroy notifier data
. */
trace_ust_destroy_session(usess);
trace_ust_destroy_session(usess);
- session->ust_session = NULL;
}
/*
}
/*
@@
-844,8
+842,16
@@
void session_release(struct urcu_ref *ref)
del_session_ht(session);
}
session_notify_destruction(session);
del_session_ht(session);
}
session_notify_destruction(session);
+
+ kernel_free_session(ksess);
+ session->kernel_session = NULL;
+ if (usess) {
+ trace_ust_free_session(usess);
+ session->ust_session = NULL;
+ }
lttng_dynamic_array_reset(&session->destroy_notifiers);
free(session->last_archived_chunk_name);
lttng_dynamic_array_reset(&session->destroy_notifiers);
free(session->last_archived_chunk_name);
+ free(session->base_path);
free(session);
if (session_published) {
/*
free(session);
if (session_published) {
/*
@@
-976,7
+982,7
@@
end:
* Session list lock must be held by the caller.
*/
enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
* Session list lock must be held by the caller.
*/
enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
- struct ltt_session **out_session)
+
const char *base_path,
struct ltt_session **out_session)
{
int ret;
enum lttng_error_code ret_code;
{
int ret;
enum lttng_error_code ret_code;
@@
-1099,6
+1105,16
@@
enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
}
}
}
}
+ if (base_path) {
+ new_session->base_path = strdup(base_path);
+ if (!new_session->base_path) {
+ ERR("Failed to allocate base path of session \"%s\"",
+ name);
+ ret_code = LTTNG_ERR_SESSION_FAIL;
+ goto error;
+ }
+ }
+
new_session->uid = uid;
new_session->gid = gid;
new_session->uid = uid;
new_session->gid = gid;
This page took
0.02667 seconds
and
5
git commands to generate.