Module: sems
Branch: master
Commit: a66e057cd1c53b48a6399ee1d815b589d4222820
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=a66e057cd1c53b48a6399ee1d815b589d4222820

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Fri Oct 22 14:56:43 2010 +0200

handle relayed INVITE in core (AmB2BSession)

---

 apps/call_timer/CallTimer.cpp        |    4 ----
 apps/dsm/mods/mod_dlg/ModDlg.cpp     |   21 +++++++++++----------
 apps/sst_b2b/SSTB2B.cpp              |    4 ----
 apps/sw_prepaid_sip/SWPrepaidSIP.cpp |    3 ---
 core/AmB2BSession.cpp                |    9 +++++++++
 5 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/apps/call_timer/CallTimer.cpp b/apps/call_timer/CallTimer.cpp
index 0c374a5..6339332 100644
--- a/apps/call_timer/CallTimer.cpp
+++ b/apps/call_timer/CallTimer.cpp
@@ -149,10 +149,6 @@ void CallTimerDialog::onInvite(const AmSipRequest& req)
   removeHeader(invite_req.hdrs, "P-App-Param");
   removeHeader(invite_req.hdrs, "P-App-Name");
 
-  //dlg.updateStatus(invite_req);
-  recvd_req.insert(std::make_pair(invite_req.cseq,invite_req));
-  
-  set_sip_relay_only(true);
   connectCallee(invite_req.to, invite_req.r_uri, true);
 }
 
diff --git a/apps/dsm/mods/mod_dlg/ModDlg.cpp b/apps/dsm/mods/mod_dlg/ModDlg.cpp
index d15e531..97990b2 100644
--- a/apps/dsm/mods/mod_dlg/ModDlg.cpp
+++ b/apps/dsm/mods/mod_dlg/ModDlg.cpp
@@ -167,16 +167,17 @@ CONST_ACTION_2P(DLGConnectCalleeRelayedAction,',', false);
 EXEC_ACTION_START(DLGConnectCalleeRelayedAction) {  
   string remote_party = resolveVars(par1, sess, sc_sess, event_params);
   string remote_uri = resolveVars(par2, sess, sc_sess, event_params);
-  if (sc_sess->last_req.get()) {
-    sc_sess->B2BaddReceivedRequest(*sc_sess->last_req.get());
-  } else {
-    WARN("internal error: initial INVITE request missing.\n");
-  }
-  AmB2BSession* b2b_sess = dynamic_cast<AmB2BSession*>(sess);
-  if (b2b_sess) 
-    b2b_sess->set_sip_relay_only(true);
-  else 
-    ERROR("getting B2B session.\n");
+
+  // if (sc_sess->last_req.get()) {
+  //   sc_sess->B2BaddReceivedRequest(*sc_sess->last_req.get());
+  // } else {
+  //   WARN("internal error: initial INVITE request missing.\n");
+  // }
+  // AmB2BSession* b2b_sess = dynamic_cast<AmB2BSession*>(sess);
+  // if (b2b_sess) 
+  //   b2b_sess->set_sip_relay_only(true);
+  // else 
+  //   ERROR("getting B2B session.\n");
 
   sc_sess->B2BconnectCallee(remote_party, remote_uri, true);
 } EXEC_ACTION_END;
diff --git a/apps/sst_b2b/SSTB2B.cpp b/apps/sst_b2b/SSTB2B.cpp
index 0527121..070e42a 100644
--- a/apps/sst_b2b/SSTB2B.cpp
+++ b/apps/sst_b2b/SSTB2B.cpp
@@ -128,10 +128,6 @@ void SSTB2BDialog::onInvite(const AmSipRequest& req)
   removeHeader(invite_req.hdrs,SIP_HDR_SESSION_EXPIRES);
   removeHeader(invite_req.hdrs,SIP_HDR_MIN_SE);
 
-  //dlg.updateStatus(req);
-  recvd_req.insert(std::make_pair(req.cseq,req));
-  
-  set_sip_relay_only(true);
   DBG("##### connecting to <%s> #####\n",req.r_uri.c_str());
   connectCallee("<" + req.r_uri + ">", req.r_uri, true);
 }
diff --git a/apps/sw_prepaid_sip/SWPrepaidSIP.cpp 
b/apps/sw_prepaid_sip/SWPrepaidSIP.cpp
index c71e4d7..1fa7ef1 100644
--- a/apps/sw_prepaid_sip/SWPrepaidSIP.cpp
+++ b/apps/sw_prepaid_sip/SWPrepaidSIP.cpp
@@ -181,11 +181,8 @@ void SWPrepaidSIPDialog::onInvite(const AmSipRequest& req)
     }
 
     invite_req = req;
-    //dlg.updateStatus(req);
-    recvd_req.insert(std::make_pair(req.cseq,req));
 
     connectCallee("<" + m_ruri + ">", m_proxy + ";sw_prepaid", true);
-    set_sip_relay_only(true);
   }
 }
 
diff --git a/core/AmB2BSession.cpp b/core/AmB2BSession.cpp
index acc4b5b..c3cc982 100644
--- a/core/AmB2BSession.cpp
+++ b/core/AmB2BSession.cpp
@@ -537,6 +537,15 @@ void AmB2BCallerSession::connectCallee(const string& 
remote_party,
   if(callee_status != None)
     terminateOtherLeg();
 
+  if (relayed_invite) {
+    // relayed INVITE - we need to add the original INVITE to
+    // list of received (relayed) requests
+    recvd_req.insert(std::make_pair(invite_req.cseq,invite_req));
+
+    // in SIP relay mode from the beginning
+    sip_relay_only = true;
+  }
+
   B2BConnectEvent* ev = new B2BConnectEvent(remote_party,remote_uri);
 
   ev->content_type = invite_req.content_type;

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to