From 0548168a0a710754196f4f3d33bfc4635d09c44f Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 4 Sep 2025 10:26:51 -0400 Subject: [PATCH] MT#55283 use explicit started flag Metadata might be empty, so we can't rely on that being set as a start trigger. Use an explicit one. Follow-up-to: I3bb58dff Change-Id: I95f02a1179940cedc3f96ce70557658c43e79bdc --- daemon/recording.c | 3 +++ recording-daemon/db.c | 2 +- recording-daemon/metafile.c | 6 ++++-- recording-daemon/types.h | 1 + 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/daemon/recording.c b/daemon/recording.c index f9185c3d1..643db6d74 100644 --- a/daemon/recording.c +++ b/daemon/recording.c @@ -301,6 +301,9 @@ void update_metadata_call(call_t *call, const sdp_ng_flags *flags) { update_call_field(call, &call->recording_path, flags ? &flags->recording_path : NULL, "RECORDING_PATH"); update_call_field(call, &call->recording_pattern, flags ? &flags->recording_pattern : NULL, "RECORDING_PATTERN"); + + if (call->recording) + append_meta_chunk_null(call->recording, "STARTED"); } // lock must be held diff --git a/recording-daemon/db.c b/recording-daemon/db.c index ef4f2857f..cd1cefec9 100644 --- a/recording-daemon/db.c +++ b/recording-daemon/db.c @@ -260,7 +260,7 @@ static void db_do_call_id(metafile_t *mf) { return; if (mf->skip_db) return; - if (!mf->metadata) + if (!mf->started) return; MYSQL_BIND b[2]; diff --git a/recording-daemon/metafile.c b/recording-daemon/metafile.c index 1dcefd5f0..f0e8270b6 100644 --- a/recording-daemon/metafile.c +++ b/recording-daemon/metafile.c @@ -103,7 +103,7 @@ static void meta_mix_file_output(metafile_t *mf) { return; } - if (!mf->metadata) + if (!mf->started) return; if (!mf->mix) { @@ -128,7 +128,7 @@ static void meta_mix_tls_output(metafile_t *mf) { mf->tls_mix = NULL; } - if (!mf->metadata) + if (!mf->started) return; if (!mf->forwarding_on) return; @@ -317,6 +317,8 @@ static void meta_section(metafile_t *mf, char *section, char *content, unsigned mf->output_pattern = g_string_chunk_insert(mf->gsc, content); else if (!strcmp(section, "SKIP_DATABASE")) mf->skip_db = 1; + else if (!strcmp(section, "STARTED")) + mf->started = 1; db_do_call(mf); meta_mix_output(mf); diff --git a/recording-daemon/types.h b/recording-daemon/types.h index eee0270de..7071b7b35 100644 --- a/recording-daemon/types.h +++ b/recording-daemon/types.h @@ -188,6 +188,7 @@ struct metafile_s { unsigned int discard:1; unsigned int db_metadata_done:1; unsigned int skip_db:1; + unsigned int started:1; };