/*
- * Copyright (C) 2011 - David Goulet <david.goulet@polymtl.ca>
- * Copyright (C) 2019 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ * Copyright (C) 2011 David Goulet <david.goulet@polymtl.ca>
+ * Copyright (C) 2019 Jérémie Galarneau <jeremie.galarneau@efficios.com>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2 only,
- * as published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#define _LGPL_SOURCE
-#include <assert.h>
#include <ctype.h>
#include <popt.h>
#include <stdio.h>
#include <common/sessiond-comm/sessiond-comm.h>
#include <common/uri.h>
#include <common/utils.h>
-#include <lttng/snapshot.h>
-#include <lttng/session-descriptor.h>
+#include <lttng/lttng.h>
static char *opt_output_path;
static char *opt_session_name;
struct lttng_session *sessions;
/* session_name should not be null */
- assert(session_name);
- assert(writer);
+ LTTNG_ASSERT(session_name);
+ LTTNG_ASSERT(writer);
count = lttng_list_sessions(&sessions);
if (count < 0) {
static
struct lttng_session_descriptor *create_session_descriptor(void)
{
- int ret;
ssize_t uri_count;
enum output_type output_type;
struct lttng_uri *uris = NULL;
output_type = OUTPUT_NONE;
} else if (opt_output_path) {
char *expanded_output_path;
+ int ret;
output_type = OUTPUT_LOCAL;
expanded_output_path = utils_expand_path(opt_output_path);
goto end;
}
} else if (opt_url || opt_ctrl_url) {
+ int ret;
+
uri_str1 = opt_ctrl_url ? opt_ctrl_url : opt_url;
uri_str2 = opt_data_url;
}
if (!descriptor) {
ERR("Failed to initialize session creation command.");
+ } else {
+ /*
+ * Auto-launch the relay daemon when a live session
+ * is created using default URLs.
+ */
+ if (!opt_url && !opt_ctrl_url && !opt_data_url &&
+ opt_live_timer && !check_relayd()) {
+ int ret;
+ const char *pathname = opt_relayd_path ? :
+ INSTALL_BIN_PATH "/lttng-relayd";
+
+ ret = spawn_relayd(pathname, 0);
+ if (ret < 0) {
+ lttng_session_descriptor_destroy(descriptor);
+ descriptor = NULL;
+ }
+ }
}
end:
free(uris);
*
* Spawn a session daemon by forking and execv.
*/
-static int spawn_sessiond(char *pathname)
+static int spawn_sessiond(const char *pathname)
{
int ret = 0;
pid_t pid;
static int launch_sessiond(void)
{
int ret;
- char *pathname = NULL;
+ const char *pathname = NULL;
ret = lttng_session_daemon_alive();
if (ret) {
return ret;
}
+static
int validate_url_option_combination(void)
{
int ret = 0;