- int pending;
- uint32_t pending_reply;
-
- DBG("Perform relayd check of pending rotation for session id %" PRIu64,
- msg.u.check_rotation_pending_relay.session_id);
- pending = lttng_consumer_check_rotation_pending_relay(
- msg.u.check_rotation_pending_relay.session_id,
- msg.u.check_rotation_pending_relay.relayd_id,
- msg.u.check_rotation_pending_relay.chunk_id);
- if (pending < 0) {
- ERR("Relayd rotation pending check failed with code %i", pending);
- ret_code = LTTCOMM_CONSUMERD_ROTATION_PENDING_RELAY_FAILED;
- } else {
- pending_reply = !!pending;
- }
-
- health_code_update();
-
- ret = consumer_send_status_msg(sock, ret_code);
- if (ret < 0) {
- /* Somehow, the session daemon is not responding anymore. */
- goto end_nosignal;
- }
-
- if (pending < 0) {
- /*
- * An error occurred while running the command;
- * don't send the 'pending' flag as the sessiond
- * will not read it.
- */
- break;
+ enum lttng_trace_chunk_command_type close_command =
+ msg.u.close_trace_chunk.close_command.value;
+ const uint64_t relayd_id =
+ msg.u.close_trace_chunk.relayd_id.value;
+ struct lttcomm_consumer_close_trace_chunk_reply reply;
+ char path[LTTNG_PATH_MAX];
+
+ ret_code = lttng_consumer_close_trace_chunk(
+ msg.u.close_trace_chunk.relayd_id.is_set ?
+ &relayd_id :
+ NULL,
+ msg.u.close_trace_chunk.session_id,
+ msg.u.close_trace_chunk.chunk_id,
+ (time_t) msg.u.close_trace_chunk.close_timestamp,
+ msg.u.close_trace_chunk.close_command.is_set ?
+ &close_command :
+ NULL, path);
+ reply.ret_code = ret_code;
+ reply.path_length = strlen(path) + 1;
+ ret = lttcomm_send_unix_sock(sock, &reply, sizeof(reply));
+ if (ret != sizeof(reply)) {
+ goto error_fatal;