diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index dc3284d03..684edda6d 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -4128,11 +4128,17 @@ const char *call_publish_ng(ng_command_ctx_t *ctx, const char *addr) { int ret; const ng_parser_t *parser = ctx->parser_ctx.parser; struct recording *recording = NULL; + char rand_call_id[65]; + char rand_from_tag[65]; call_ng_process_flags(&flags, ctx); - if ((ret = call_ng_basic_checks(&flags)) > 0) - return _ng_basic_errors[ret]; + if (!flags.sdp.len) + return "No SDP body in message"; + if (!flags.call_id.len) + flags.call_id = STR_LEN(rand_hex_str(rand_call_id, 32), 64); + if (!flags.from_tag.len) + flags.from_tag = STR_LEN(rand_hex_str(rand_from_tag, 32), 64); call = call_get_or_create(&flags.call_id, false); @@ -4164,6 +4170,9 @@ const char *call_publish_ng(ng_command_ctx_t *ctx, const char *addr) { if (!ok) return "Failed to create SDP"; + parser->dict_add_str_dup(ctx->resp, "call-id", &call->callid); + parser->dict_add_str_dup(ctx->resp, "from-tag", &ml->tag); + ctx->ngbuf->sdp_out = sdp_out.s; parser->dict_add_str(ctx->resp, "sdp", &sdp_out);