+/*
+ * Stop the session and wait for the data before destroying it
+ */
+int lttng_destroy_session(const char *session_name)
+{
+ int ret;
+
+ /*
+ * Stop the tracing and wait for the data.
+ */
+ ret = _lttng_stop_tracing(session_name, 1);
+ if (ret && ret != -LTTNG_ERR_TRACE_ALREADY_STOPPED) {
+ goto end;
+ }
+
+ ret = _lttng_destroy_session(session_name);
+end:
+ return ret;
+}
+
+/*
+ * Destroy the session without waiting for the data.
+ */
+int lttng_destroy_session_no_wait(const char *session_name)
+{
+ int ret;
+
+ /*
+ * Stop the tracing without waiting for the data.
+ * The session might already have been stopped, so just
+ * skip this error.
+ */
+ ret = _lttng_stop_tracing(session_name, 0);
+ if (ret && ret != -LTTNG_ERR_TRACE_ALREADY_STOPPED) {
+ goto end;
+ }
+
+ ret = _lttng_destroy_session(session_name);
+end:
+ return ret;
+}
+