Fix: set session in output mode if URL are set afterwards
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 339a7659e5ae63b00d8547d6ac47656cb81e69a8..c1f5a4e70b7ce83545ce0858db2f781b563fdc26 100644 (file)
@@ -850,6 +850,16 @@ int cmd_enable_channel(struct ltt_session *session,
 
        rcu_read_lock();
 
+       /*
+        * The ringbuffer (both in user space and kernel) behave badly in overwrite
+        * mode and with less than 2 subbuf so block it right away and send back an
+        * invalid attribute error.
+        */
+       if (attr->attr.overwrite && attr->attr.num_subbuf < 2) {
+               ret = LTTNG_ERR_INVALID;
+               goto error;
+       }
+
        switch (domain->type) {
        case LTTNG_DOMAIN_KERNEL:
        {
@@ -1769,6 +1779,17 @@ int cmd_set_consumer_uri(int domain, struct ltt_session *session,
                }
        }
 
+       /*
+        * Make sure to set the session in output mode after we set URI since a
+        * session can be created without URL (thus flagged in no output mode).
+        */
+       session->output_traces = 1;
+       if (ksess) {
+               ksess->output_traces = 1;
+       } else if (usess) {
+               usess->output_traces = 1;
+       }
+
        /* All good! */
        ret = LTTNG_OK;
 
This page took 0.027278 seconds and 4 git commands to generate.