handle relayed INVITE in core (AmB2BSession)

sayer/1.4-spce2.6
Stefan Sayer 16 years ago
parent de5cdee34b
commit a66e057cd1

@ -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);
}

@ -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;

@ -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);
}

@ -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);
}
}

@ -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;

Loading…
Cancel
Save