From 1609823c1a9df41bf49d0bcbc47d7f2b3f268fc9 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Wed, 26 Nov 2025 17:00:31 +0100 Subject: [PATCH] MT#63557 AmB2BSession::onB2BEvent: don't prevent non-fwd updates If this is an SDP answer (provided by non-fwd 200OK), don't hesitate to update the original leg originated this INVITE transaction. Originally this was prevented by the 56115ed5dd00f7ce9271e97e5933a9745eb31435 of the original (root) SEMS project, in order to fix some of the Click2Dial scenarios of the according Click2Dial app. Original message from it: don't refresh for establishing transaction fixes click2dial application. In the B2BUA, usually a refresh is done if the established session description has changed on the other leg (e.g. initiated by SST refresh from the middle). This fix prevents that refresh for the initial transaction, where the re-INVITE to caller is done explicitely. It seems that this commit somehow introduces this logic also for those legs, which aren't actually establishing but are in need for the SDP media updates. So just remove it. Change-Id: I3acf7d3d9ceaa3c8d7a8ba0f7a5c6973646bc2af --- core/AmB2BSession.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/AmB2BSession.cpp b/core/AmB2BSession.cpp index 6111e42f..def9f7c4 100644 --- a/core/AmB2BSession.cpp +++ b/core/AmB2BSession.cpp @@ -537,16 +537,16 @@ void AmB2BSession::onB2BEvent(B2BEvent* ev) { if (updateSessionDescription(reply_ev->reply.body)) { - if (reply_ev->reply.cseq != est_invite_cseq) { - if (dlg->getUACInvTransPending()) { - ILOG_DLG(L_DBG, "changed session, but UAC INVITE trans pending\n"); - /* todo(?): save until trans is finished? */ - return; - } - ILOG_DLG(L_DBG, "session description changed - refreshing\n"); - sendEstablishedReInvite(); - } else { - ILOG_DLG(L_DBG, "reply to establishing INVITE request - not refreshing\n"); + if (dlg->getUACInvTransPending()) { + ILOG_DLG(L_DBG, "changed session, but UAC INVITE trans pending\n"); + /* TODO: save until trans is finished? */ + return; + } + ILOG_DLG(L_DBG, "session description changed - refreshing\n"); + if (sendEstablishedReInvite() < 0) { + ILOG_DLG(L_ERR, "could not re-Invite after locally initiated request" + "in B2B leg changed session (this='%s', other='%s')\n", + getLocalTag().c_str(), other_id.c_str()); } }