goto exit_listener;
}
- ret = live_start_threads(live_uri, relay_ctx);
+ ret = live_start_threads(live_uri, relay_ctx, thread_quit_pipe);
if (ret != 0) {
ERR("Starting live viewer threads");
+ goto exit_live;
}
-exit_listener:
+ live_stop_threads();
+
+exit_live:
ret = pthread_join(listener_thread, &status);
if (ret != 0) {
PERROR("pthread_join");
goto error; /* join error, exit without cleanup */
}
-exit_worker:
+exit_listener:
ret = pthread_join(worker_thread, &status);
if (ret != 0) {
PERROR("pthread_join");
goto error; /* join error, exit without cleanup */
}
-exit_dispatcher:
+exit_worker:
ret = pthread_join(dispatcher_thread, &status);
if (ret != 0) {
PERROR("pthread_join");
goto error; /* join error, exit without cleanup */
}
+
+exit_dispatcher:
lttng_ht_destroy(viewer_streams_ht);
exit_relay_ctx_viewer_streams:
free(relay_ctx);
exit:
- live_stop_threads();
cleanup();
if (!ret) {
exit(EXIT_SUCCESS);