diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index 4fc0a4f3a..f1b5c87ea 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -4114,6 +4114,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); @@ -4140,16 +4141,26 @@ 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); ret = sdp_create(&sdp_out, ml, &flags); - if (!ret) { - save_last_sdp(ml, &sdp_in, &parsed, &streams); + if (ret) + return "Failed to create SDP"; + + save_last_sdp(ml, &sdp_in, &parsed, &streams); + if (sdp_out.len) { 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 } - if (ret) - return "Failed to create SDP"; + recording_response(recording, parser, ctx->resp); dequeue_sdp_fragments(ml);