Fix: don't ask data pending if session was not started
authorDavid Goulet <dgoulet@efficios.com>
Tue, 25 Mar 2014 15:34:47 +0000 (11:34 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Tue, 25 Mar 2014 15:34:47 +0000 (11:34 -0400)
Fixes #770

Signed-off-by: David Goulet <dgoulet@efficios.com>
src/bin/lttng-sessiond/cmd.c

index 5bec355486975a21d0417a9538728d4ea2f3822d..6df18935e0d1caadd24094aaf0ec03cfba06347c 100644 (file)
@@ -2532,6 +2532,21 @@ int cmd_data_pending(struct ltt_session *session)
        if (session->enabled) {
                ret = LTTNG_ERR_SESSION_STARTED;
                goto error;
+       } else {
+               /*
+                * If stopped, just make sure we've started before else the above call
+                * will always send that there is data pending.
+                *
+                * The consumer assumes that when the data pending command is received,
+                * the trace has been started before or else no output data is written
+                * by the streams which is a condition for data pending. So, this is
+                * *VERY* important that we don't ask the consumer before a start
+                * trace.
+                */
+               if (!session->started) {
+                       ret = 0;
+                       goto error;
+               }
        }
 
        if (ksess && ksess->consumer) {
This page took 0.027997 seconds and 4 git commands to generate.