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