+ /* Init config from environment variables. */
+ sessiond_config_apply_env_config(&config);
+
+ /*
+ * Resolve all paths received as arguments, configuration option, or
+ * through environment variable as absolute paths. This is necessary
+ * since daemonizing causes the sessiond's current working directory
+ * to '/'.
+ */
+ ret = sessiond_config_resolve_paths(&config);
+ if (ret) {
+ goto exit_options;
+ }
+
+ /* Apply config. */
+ lttng_opt_verbose = config.verbose;
+ lttng_opt_quiet = config.quiet;
+ kconsumer_data.err_unix_sock_path =
+ config.kconsumerd_err_unix_sock_path.value;
+ kconsumer_data.cmd_unix_sock_path =
+ config.kconsumerd_cmd_unix_sock_path.value;
+ ustconsumer32_data.err_unix_sock_path =
+ config.consumerd32_err_unix_sock_path.value;
+ ustconsumer32_data.cmd_unix_sock_path =
+ config.consumerd32_cmd_unix_sock_path.value;
+ ustconsumer64_data.err_unix_sock_path =
+ config.consumerd64_err_unix_sock_path.value;
+ ustconsumer64_data.cmd_unix_sock_path =
+ config.consumerd64_cmd_unix_sock_path.value;
+ set_clock_plugin_env();
+
+ sessiond_config_log(&config);
+
+ if (create_lttng_rundir()) {
+ retval = -1;
+ goto exit_options;
+ }
+
+ /* Abort launch if a session daemon is already running. */
+ if (check_existing_daemon()) {
+ ERR("A session daemon is already running.");
+ retval = -1;
+ goto exit_options;
+ }
+