Fix: Subdirectory handling for lttng and sessiond
[lttng-tools.git] / src / bin / lttng-sessiond / session.c
index 2181c0dd58fc5b4ccb33f9a5c4ae10fe7bda2ff0..75fcf4bfded58320ab6723e9ae0e574740107b24 100644 (file)
@@ -149,6 +149,10 @@ int session_destroy(struct ltt_session *session)
        DBG("Destroying session %s", session->name);
        del_session_list(session);
        pthread_mutex_destroy(&session->lock);
+
+       rcu_read_lock();
+       consumer_destroy_output(session->consumer);
+       rcu_read_unlock();
        free(session);
 
        return LTTCOMM_OK;
@@ -188,10 +192,11 @@ int session_create(char *name, char *path, uid_t uid, gid_t gid)
                        ret = LTTCOMM_FATAL;
                        goto error_asprintf;
                }
+               new_session->start_consumer = 1;
        } else {
-               ERR("No session path given");
-               ret = LTTCOMM_FATAL;
-               goto error;
+               /* No path indicates that there is no use for a consumer. */
+               new_session->start_consumer = 0;
+               new_session->path[0] = '\0';
        }
 
        /* Init kernel session */
@@ -204,7 +209,7 @@ int session_create(char *name, char *path, uid_t uid, gid_t gid)
        new_session->uid = uid;
        new_session->gid = gid;
 
-       /* Mkdir if we have a valid path length */
+       /* Mkdir if we have a valid path and length */
        if (strlen(new_session->path) > 0) {
                ret = run_as_mkdir_recursive(new_session->path, S_IRWXU | S_IRWXG,
                                new_session->uid, new_session->gid);
@@ -222,9 +227,13 @@ int session_create(char *name, char *path, uid_t uid, gid_t gid)
        new_session->id = add_session_list(new_session);
        session_unlock_list();
 
-       DBG("Tracing session %s created in %s with ID %u by UID %d GID %d",
-               name, path, new_session->id,
-               new_session->uid, new_session->gid);
+       /*
+        * Consumer is let to NULL since the create_session_uri command will set it
+        * up and, if valid, assign it to the session.
+        */
+
+       DBG("Tracing session %s created in %s with ID %u by UID %d GID %d", name,
+                       path, new_session->id, new_session->uid, new_session->gid);
 
        return LTTCOMM_OK;
 
This page took 0.024006 seconds and 4 git commands to generate.