Fix: keep active session state on redundant start command
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index f152c1c2ed191269a19aace219679916a88e0cfb..2c2ce285a676461238703f2cb77a285cdb5a66b6 100644 (file)
@@ -2581,13 +2581,12 @@ ssize_t cmd_list_syscalls(struct lttng_event **events)
  *
  * Called with session lock held.
  */
-ssize_t cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
+int cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
                struct ltt_session *session,
                enum lttng_domain_type domain,
-               struct lttng_tracker_id **ids)
+               struct lttng_tracker_ids **ids)
 {
-       int ret;
-       ssize_t nr_pids = 0;
+       int ret = LTTNG_OK;
 
        switch (domain) {
        case LTTNG_DOMAIN_KERNEL:
@@ -2595,9 +2594,9 @@ ssize_t cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
                struct ltt_kernel_session *ksess;
 
                ksess = session->kernel_session;
-               nr_pids = kernel_list_tracker_ids(tracker_type, ksess, ids);
-               if (nr_pids < 0) {
-                       ret = LTTNG_ERR_KERN_LIST_FAIL;
+               ret = kernel_list_tracker_ids(tracker_type, ksess, ids);
+               if (ret != LTTNG_OK) {
+                       ret = -LTTNG_ERR_KERN_LIST_FAIL;
                        goto error;
                }
                break;
@@ -2607,9 +2606,9 @@ ssize_t cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
                struct ltt_ust_session *usess;
 
                usess = session->ust_session;
-               nr_pids = trace_ust_list_tracker_ids(tracker_type, usess, ids);
-               if (nr_pids < 0) {
-                       ret = LTTNG_ERR_UST_LIST_FAIL;
+               ret = trace_ust_list_tracker_ids(tracker_type, usess, ids);
+               if (ret != LTTNG_OK) {
+                       ret = -LTTNG_ERR_UST_LIST_FAIL;
                        goto error;
                }
                break;
@@ -2618,15 +2617,13 @@ ssize_t cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
        case LTTNG_DOMAIN_JUL:
        case LTTNG_DOMAIN_PYTHON:
        default:
-               ret = LTTNG_ERR_UND;
+               ret = -LTTNG_ERR_UND;
                goto error;
        }
 
-       return nr_pids;
-
 error:
        /* Return negative value to differentiate return code */
-       return -ret;
+       return ret;
 }
 
 /*
@@ -2654,7 +2651,8 @@ int cmd_start_trace(struct ltt_session *session)
        /* Is the session already started? */
        if (session->active) {
                ret = LTTNG_ERR_TRACE_ALREADY_STARTED;
-               goto error;
+               /* Perform nothing */
+               goto end;
        }
 
        if (session->rotation_state == LTTNG_ROTATION_STATE_ONGOING &&
@@ -2782,6 +2780,7 @@ error:
                session->cleared_after_last_stop =
                                session_cleared_after_last_stop;
        }
+end:
        return ret;
 }
 
This page took 0.026573 seconds and 5 git commands to generate.