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
