Module: sems Branch: master Commit: 71d2a262e06ac9866619de5f429a0ad711d5ebd4 URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=71d2a262e06ac9866619de5f429a0ad711d5ebd4
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Wed Apr 3 18:10:45 2013 +0800 DSM:B2B: new B2B.enableEarlyMediaRelay action enable or disable relaying of early media SDP as re-Invite in A leg --- apps/dsm/DSMCall.cpp | 4 ++++ apps/dsm/DSMCall.h | 1 + apps/dsm/DSMCoreModule.cpp | 7 +++++++ apps/dsm/DSMCoreModule.h | 1 + apps/dsm/DSMSession.h | 3 +++ apps/dsm/SystemDSM.cpp | 1 + apps/dsm/SystemDSM.h | 2 ++ doc/dsm/dsm_syntax.txt | 3 +++ 8 files changed, 22 insertions(+), 0 deletions(-) diff --git a/apps/dsm/DSMCall.cpp b/apps/dsm/DSMCall.cpp index d385624..58164a9 100644 --- a/apps/dsm/DSMCall.cpp +++ b/apps/dsm/DSMCall.cpp @@ -842,6 +842,10 @@ void DSMCall::B2BaddReceivedRequest(const AmSipRequest& req) { recvd_req.insert(std::make_pair(req.cseq, req)); } +void DSMCall::B2BsetRelayEarlyMediaSDP(bool enabled) { + set_sip_relay_early_media_sdp(enabled); +} + void DSMCall::B2BsetHeaders(const string& hdr, bool replaceCRLF) { if (!replaceCRLF) { invite_req.hdrs = hdr; diff --git a/apps/dsm/DSMCall.h b/apps/dsm/DSMCall.h index bb3fd20..7b1a849 100644 --- a/apps/dsm/DSMCall.h +++ b/apps/dsm/DSMCall.h @@ -144,6 +144,7 @@ public: bool relayed_invite = false); void B2BaddReceivedRequest(const AmSipRequest& req); + void B2BsetRelayEarlyMediaSDP(bool enabled); void B2BsetHeaders(const string& hdr, bool replaceCRLF); void B2BclearHeaders(); void B2BaddHeader(const string& hdr); diff --git a/apps/dsm/DSMCoreModule.cpp b/apps/dsm/DSMCoreModule.cpp index 0f54c0c..a5866fe 100644 --- a/apps/dsm/DSMCoreModule.cpp +++ b/apps/dsm/DSMCoreModule.cpp @@ -127,6 +127,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.enableEarlyMediaRelay", SCB2BEnableEarlyMediaRelayAction); DEF_CMD("B2B.addHeader", SCB2BAddHeaderAction); DEF_CMD("B2B.removeHeader", SCB2BRemoveHeaderAction); DEF_CMD("B2B.clearHeaders", SCB2BClearHeadersAction); @@ -1297,6 +1298,12 @@ EXEC_ACTION_START(SCB2BReinviteAction) { sess->sendReinvite(updateSDP, par2); } 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"); + sc_sess->B2BsetRelayEarlyMediaSDP(val=="true"); +} EXEC_ACTION_END; + EXEC_ACTION_START(SCB2BAddHeaderAction) { string val = resolveVars(arg, sess, sc_sess, event_params); DBG("adding B2B header '%s'\n", val.c_str()); diff --git a/apps/dsm/DSMCoreModule.h b/apps/dsm/DSMCoreModule.h index 17e4a1b..07a3537 100644 --- a/apps/dsm/DSMCoreModule.h +++ b/apps/dsm/DSMCoreModule.h @@ -112,6 +112,7 @@ DEF_ACTION_2P(SCB2BConnectCalleeAction); DEF_ACTION_1P(SCB2BTerminateOtherLegAction); DEF_ACTION_2P(SCB2BReinviteAction); +DEF_ACTION_1P(SCB2BEnableEarlyMediaRelayAction); DEF_ACTION_1P(SCB2BAddHeaderAction); DEF_ACTION_1P(SCB2BClearHeadersAction); DEF_ACTION_2P(SCB2BSetHeadersAction); diff --git a/apps/dsm/DSMSession.h b/apps/dsm/DSMSession.h index f542821..5315578 100644 --- a/apps/dsm/DSMSession.h +++ b/apps/dsm/DSMSession.h @@ -138,6 +138,9 @@ class DSMSession { /** insert request in list of received ones */ virtual void B2BaddReceivedRequest(const AmSipRequest& req) = 0; + /** enable early media relay as reinvite */ + virtual void B2BsetRelayEarlyMediaSDP(bool enabled) = 0; + /** set headers of outgoing INVITE */ virtual void B2BsetHeaders(const string& hdr, bool replaceCRLF) = 0; diff --git a/apps/dsm/SystemDSM.cpp b/apps/dsm/SystemDSM.cpp index 7896afc..d42bd5f 100644 --- a/apps/dsm/SystemDSM.cpp +++ b/apps/dsm/SystemDSM.cpp @@ -209,6 +209,7 @@ NOT_IMPLEMENTED(B2BconnectCallee(const string& remote_party, bool relayed_invite)); NOT_IMPLEMENTED(B2BterminateOtherLeg()); NOT_IMPLEMENTED(B2BaddReceivedRequest(const AmSipRequest& req)); +NOT_IMPLEMENTED(B2BsetRelayEarlyMediaSDP(bool enabled)); NOT_IMPLEMENTED(B2BsetHeaders(const string& hdr, bool replaceCRLF)); NOT_IMPLEMENTED(B2BclearHeaders()); NOT_IMPLEMENTED(B2BaddHeader(const string& hdr)); diff --git a/apps/dsm/SystemDSM.h b/apps/dsm/SystemDSM.h index c9d427a..19f444b 100644 --- a/apps/dsm/SystemDSM.h +++ b/apps/dsm/SystemDSM.h @@ -84,6 +84,8 @@ class SystemDSM /** insert request in list of received ones */ void B2BaddReceivedRequest(const AmSipRequest& req); + void B2BsetRelayEarlyMediaSDP(bool enabled); + /** set headers of outgoing INVITE */ void B2BsetHeaders(const string& hdr, bool replaceCRLF); diff --git a/doc/dsm/dsm_syntax.txt b/doc/dsm/dsm_syntax.txt index b86908b..40e924c 100644 --- a/doc/dsm/dsm_syntax.txt +++ b/doc/dsm/dsm_syntax.txt @@ -206,6 +206,9 @@ B2B call control B2B.clearHeaders() clear the headers used for outgoing INVITE on B leg + B2B.enableEarlyMediaRelay(enable=[true|false]) + enable or disable relaying of early media SDP (180-183) as re-Invite in the first leg + B2B.addHeader(string header) add a header for outgoing INVITE on B leg _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
