From 670d708f951109dc601c33d5e575479f34457b71 Mon Sep 17 00:00:00 2001 From: Donat Zenichev Date: Thu, 10 Oct 2024 15:17:58 +0200 Subject: [PATCH] MT#61140 DSM: add `B2B.sendEstablishedReinvite()` Add support of the `sendEstablishedReinvite()` for the B2B DSM module. Change-Id: Idb46f9b6a900db2b6f71748fcb91223b561ee290 --- apps/dsm/DSMCoreModule.cpp | 10 ++++++++++ apps/dsm/DSMCoreModule.h | 1 + core/AmB2BSession.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/apps/dsm/DSMCoreModule.cpp b/apps/dsm/DSMCoreModule.cpp index 49ca95da..52422753 100644 --- a/apps/dsm/DSMCoreModule.cpp +++ b/apps/dsm/DSMCoreModule.cpp @@ -143,6 +143,7 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) { DEF_CMD("B2B.connectCallee", SCB2BConnectCalleeAction); DEF_CMD("B2B.terminateOtherLeg", SCB2BTerminateOtherLegAction); DEF_CMD("B2B.sendReinvite", SCB2BReinviteAction); + DEF_CMD("B2B.sendEstablishedReinvite", SCB2BSendEstablishedReinviteAction); DEF_CMD("B2B.enableEarlyMediaRelay", SCB2BEnableEarlyMediaRelayAction); DEF_CMD("B2B.addHeader", SCB2BAddHeaderAction); DEF_CMD("B2B.getHeaderRequest", SCB2BGetHeaderRequestAction); @@ -1538,6 +1539,15 @@ EXEC_ACTION_START(SCB2BReinviteAction) { sess->sendReinvite(updateSDP, par2); } EXEC_ACTION_END; +EXEC_ACTION_START(SCB2BSendEstablishedReinviteAction) { + AmB2BSession* b2b_sess = dynamic_cast(sess); + if (NULL != b2b_sess) { + b2b_sess->sendEstablishedReInvite(); + } else { + ERROR("internal: Session object is not B2B session (huh?), not reinviting\n"); + } +} EXEC_ACTION_END; + EXEC_ACTION_START(SCB2BEnableEarlyMediaRelayAction) { string val = resolveVars(arg, sess, sc_sess, event_params); DBG("B2B: %sabling early media SDP relay as re-Invite\n", (val=="true")?"En":"Dis"); diff --git a/apps/dsm/DSMCoreModule.h b/apps/dsm/DSMCoreModule.h index cb28ccc8..d84ad927 100644 --- a/apps/dsm/DSMCoreModule.h +++ b/apps/dsm/DSMCoreModule.h @@ -123,6 +123,7 @@ DEF_ACTION_2P(SCPlayRingtoneAction); DEF_ACTION_2P(SCB2BConnectCalleeAction); DEF_ACTION_1P(SCB2BTerminateOtherLegAction); DEF_ACTION_2P(SCB2BReinviteAction); +DEF_ACTION_1P(SCB2BSendEstablishedReinviteAction); DEF_ACTION_1P(SCB2BEnableEarlyMediaRelayAction); DEF_ACTION_1P(SCB2BAddHeaderAction); diff --git a/core/AmB2BSession.h b/core/AmB2BSession.h index 84eb99ca..22a53a06 100644 --- a/core/AmB2BSession.h +++ b/core/AmB2BSession.h @@ -252,11 +252,13 @@ private: void onSessionTimeout(); void onNoAck(unsigned int cseq); + public: /** send re-INVITE with established session description * @return 0 on success */ int sendEstablishedReInvite(const std::string &hdrs = ""); + protected: /** do session refresh */ bool refresh(int flags = 0);