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

Reply via email to