diff --git a/daemon/call.c b/daemon/call.c index 9089f573a..0e3d0edbd 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -2756,10 +2756,6 @@ static void __call_monologue_init_from_flags(struct call_monologue *ml, struct c /* consume sdp session parts */ { - /* for cases with origin replacements, keep the very first used origin */ - if (other_ml && !other_ml->sdp_orig_out.parsed && flags->session_sdp_orig.parsed) - other_ml->sdp_orig_out = sdp_orig_dup(&flags->session_sdp_orig); - /* origin (name, version etc.) */ if (flags->session_sdp_orig.parsed) { ml->sdp_orig_in = sdp_orig_dup(&flags->session_sdp_orig); @@ -4503,11 +4499,6 @@ int monologue_subscribe_request(const subscription_q *srms, struct call_monologu int ret = monologue_subscribe_request1(src_media, dst_ml, flags, ht); if (ret) return -1; - - /* update last used origin: copy from source to the dest monologue */ - struct call_monologue *src_ml = src_media->monologue; - if (src_ml->sdp_orig_out.parsed && !dst_ml->sdp_orig_out.parsed) - dst_ml->sdp_orig_out = sdp_orig_dup(&src_ml->sdp_orig_out); } monologue_media_start(dst_ml); diff --git a/daemon/sdp.c b/daemon/sdp.c index 7b6ac7374..65ba12d26 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -3040,6 +3040,16 @@ static void sdp_out_add_origin(GString *out, struct call_monologue *monologue, orig_address = ml->sdp_orig_in.address.address; } + if (!monologue->sdp_orig_out.parsed) + monologue->sdp_orig_out = sdp_orig_dup(&(sdp_origin) { + .username = *orig_username, + .session_id = *orig_session_id, + .version_num = orig_session_version, + .address.address_type = orig_address_type, + .address.address = orig_address, + .parsed = 1, + }); + /* print it to the output sdp */ g_string_append_printf(out, "o="STR_FORMAT" "STR_FORMAT" %llu IN "STR_FORMAT" "STR_FORMAT"\r\n",