From 508ce684d7f158dbd0d24cab21b335efb1e181c7 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Mon, 30 Sep 2024 20:19:59 +0200 Subject: [PATCH] MT#60476 sdp_create: properly detect `session_last_sdp_orig` For the sdp_create approach, currently given monologue is actually the holder of `session_last_sdp_orig` for currently processed direction of SDP preparation. So this -> other, whereas other keeps the required last orig. Change-Id: Id1bdb80ecc0401be5fd430cd4369b8588de4379b --- daemon/sdp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/daemon/sdp.c b/daemon/sdp.c index e60f18562..2f1ebbbd8 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -3540,14 +3540,16 @@ static void sdp_out_add_origin(GString *out, struct call_monologue *monologue, if (ms && ms->monologue) ml = ms->monologue; - /* orig username */ - str * orig_username = (ml->session_last_sdp_orig && + /* orig username + * session_last_sdp_orig is stored on the other media always, + * so if origin is meant for the A media, then it is stored on the B one */ + str * orig_username = (monologue->session_last_sdp_orig && (flags->replace_username || flags->replace_origin_full)) ? - &ml->session_last_sdp_orig->username : &ml->session_sdp_orig->username; + &monologue->session_last_sdp_orig->username : &ml->session_sdp_orig->username; /* orig session id */ - str * orig_session_id = (ml->session_last_sdp_orig && flags->replace_origin_full) ? - &ml->session_last_sdp_orig->session_id : &ml->session_sdp_orig->session_id; + str * orig_session_id = (monologue->session_last_sdp_orig && flags->replace_origin_full) ? + &monologue->session_last_sdp_orig->session_id : &ml->session_sdp_orig->session_id; /* orig session ver * replacement is handled later in sdp_create() based on SDP changes */