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
master
Orgad Shaneh 4 days ago committed by Richard Fuchs
parent 910624c997
commit 2bc07e3cc9

@ -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);

Loading…
Cancel
Save