Send data pending status as part of payload instead of an invalid error
[lttng-tools.git] / src / lib / lttng-ctl / lttng-ctl.c
index 004b0ccebf1c7b24e49674e2f3d66d53bfde7abe..5f078c94ad67b4fbf635d77f493084d970e63cb2 100644 (file)
@@ -1880,6 +1880,7 @@ int lttng_data_pending(const char *session_name)
 {
        int ret;
        struct lttcomm_session_msg lsm;
+       uint8_t *pending = NULL;
 
        if (session_name == NULL) {
                return -LTTNG_ERR_INVALID;
@@ -1891,18 +1892,18 @@ int lttng_data_pending(const char *session_name)
        lttng_ctl_copy_string(lsm.session.name, session_name,
                        sizeof(lsm.session.name));
 
-       ret = lttng_ctl_ask_sessiond(&lsm, NULL);
-
-       /*
-        * The lttng_ctl_ask_sessiond function negate the return code if it's not
-        * LTTNG_OK so getting -1 means that the reply ret_code was 1 thus meaning
-        * that the data is available. Yes it is hackish but for now this is the
-        * only way.
-        */
-       if (ret == -1) {
-               ret = 1;
+       ret = lttng_ctl_ask_sessiond(&lsm, (void **) &pending);
+       if (ret < 0) {
+               goto end;
+       } else if (ret != 1) {
+               /* Unexpected payload size */
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
        }
 
+       ret = (int) *pending;
+end:
+       free(pending);
        return ret;
 }
 
@@ -1954,7 +1955,7 @@ int lttng_create_session_live(const char *name, const char *url,
        struct lttcomm_session_msg lsm;
        struct lttng_uri *uris = NULL;
 
-       if (name == NULL) {
+       if (name == NULL || timer_interval == 0) {
                return -LTTNG_ERR_INVALID;
        }
 
This page took 0.024266 seconds and 4 git commands to generate.