- ret = lttng_live_get_one_metadata_packet(trace, fp);
- if (ret > 0) {
- len_read += ret;
- }
- } while (ret > 0);
-
- /*
- * Consider metadata closed as soon as we get an error reading
- * it (e.g. cannot be found).
- */
- if (ret < 0) {
- if (!metadata->closed) {
- metadata->closed = true;
+ metadata_status = lttng_live_get_one_metadata_packet(trace, fp,
+ &reply_len);
+
+ switch (metadata_status) {
+ case LTTNG_LIVE_GET_ONE_METADATA_STATUS_OK:
+ len_read += reply_len;
+ break;
+ case LTTNG_LIVE_GET_ONE_METADATA_STATUS_END:
+ keep_receiving = false;
+ break;
+ case LTTNG_LIVE_GET_ONE_METADATA_STATUS_CLOSED:
+ BT_COMP_LOGD("Metadata stream was closed by the Relay, the trace is no longer active: "
+ "trace-id=%"PRIu64", metadata-stream-id=%"PRIu64,
+ trace->id, metadata->stream_id);