From 2bc07e3cc9e5ae845075acfc961d9837df9d4c7d Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 7 Jan 2026 15:30:41 +0200 Subject: [PATCH] MT#55283 Support "record call" for publish Initial call recording is set by "record call". This worked for offer/answer but not for publish. Closes #2052 Change-Id: I0d311406aec36392f29c324ec862baa50bf23756 --- daemon/call_interfaces.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 64db02a98..8dee40c12 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -4115,6 +4115,7 @@ const char *call_publish_ng(ng_command_ctx_t *ctx, const char *addr) { g_autoptr(call_t) call = NULL; int ret; const ng_parser_t *parser = ctx->parser_ctx.parser; + struct recording *recording = NULL; call_ng_process_flags(&flags, ctx); @@ -4141,16 +4142,25 @@ const char *call_publish_ng(ng_command_ctx_t *ctx, const char *addr) { if (ret) ilog(LOG_ERR, "Publish error"); // XXX close call? handle errors? + update_metadata_monologue(ml, &flags); + detect_setup_recording(ml->call, &flags); + + recording = call->recording; + + meta_write_sdp_before(recording, &sdp_in, ml, flags.opmode); bool ok = sdp_create(&sdp_out, ml, &flags); - if (ok) { - save_last_sdp(ml, &sdp_in, &parsed, &streams); - ctx->ngbuf->sdp_out = sdp_out.s; - parser->dict_add_str(ctx->resp, "sdp", &sdp_out); - sdp_out = STR_NULL; // ownership passed to output - } - else + if (!ok) return "Failed to create SDP"; + save_last_sdp(ml, &sdp_in, &parsed, &streams); + ctx->ngbuf->sdp_out = sdp_out.s; + parser->dict_add_str(ctx->resp, "sdp", &sdp_out); + + meta_write_sdp_after(recording, &sdp_out, ml, flags.opmode); + sdp_out = STR_NULL; // ownership passed to output + + recording_response(recording, parser, ctx->resp); + dequeue_sdp_fragments(ml); call_unlock_release_update(&call);