+ total_payload_received = ret;
+
+ if (!cmd_header) {
+ ret = -LTTNG_ERR_UNK;
+ goto end;
+ }
+
+ if (cmd_header->count > INT_MAX) {
+ ret = -LTTNG_ERR_OVERFLOW;
+ goto end;
+ }
+
+ nb_event_fields = cmd_header->count;
+
+ {
+ const struct lttng_buffer_view view =
+ lttng_buffer_view_init(reception_buffer, 0, total_payload_received);
+
+ ret_code = lttng_event_fields_create_and_flatten_from_buffer(
+ &view, nb_event_fields, fields);
+ if (ret_code != LTTNG_OK) {
+ ret = -ret_code;
+ goto end;
+ }
+ }
+
+ ret = nb_event_fields;
+
+end:
+ free(cmd_header);
+ free(reception_buffer);
+ return ret;