The lttng_list_channels() API call now returns a
LTTNG_ERR_KERN_CHAN_NOT_FOUND or LTTNG_ERR_UST_CHAN_NOT_FOUND when there
is no channel enabled for the session and domain.
Changes had to be made to the list command in order to correctly manage
the returned code.
The bug260 mentionned that the session(s) were destroyed but this could
not be reproduce. However, the rest of the bug description is valid.
Fixes #260
Signed-off-by: David Goulet <dgoulet@efficios.com>
nb_chan = session->kernel_session->channel_count;
}
DBG3("Number of kernel channels %zd", nb_chan);
+ if (nb_chan <= 0) {
+ ret = LTTNG_ERR_KERN_CHAN_NOT_FOUND;
+ }
break;
case LTTNG_DOMAIN_UST:
if (session->ust_session != NULL) {
session->ust_session->domain_global.channels);
}
DBG3("Number of UST global channels %zd", nb_chan);
+ if (nb_chan <= 0) {
+ ret = LTTNG_ERR_UST_CHAN_NOT_FOUND;
+ }
break;
default:
*channels = NULL;
list_lttng_channels(domain, session, *channels);
} else {
*channels = NULL;
+ /* Ret value was set in the domain switch case */
+ goto error;
}
return nb_chan;
count = lttng_list_channels(handle, &channels);
if (count < 0) {
- ret = count;
+ switch (-count) {
+ case LTTNG_ERR_KERN_CHAN_NOT_FOUND:
+ ret = CMD_SUCCESS;
+ WARN("No kernel channel");
+ break;
+ default:
+ /* We had a real error */
+ ret = count;
+ ERR("%s", lttng_strerror(ret));
+ }
goto error_channels;
- } else if (count == 0) {
- ERR("Channel %s not found", channel_name);
- goto error;
}
if (channel_name == NULL) {