don't restart DSM on re-INVITE

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1327 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 18 years ago
parent 18c90ba182
commit f688c2a962

@ -36,7 +36,8 @@ DSMDialog::DSMDialog(AmPromptCollection* prompts,
UACAuthCred* credentials)
: prompts(prompts), default_prompts(prompts), diags(diags), startDiagName(startDiagName),
playlist(this), cred(credentials),
rec_file(NULL)
rec_file(NULL),
process_invite(true), process_sessionstart(true)
{
diags.addToEngine(&engine);
set_sip_relay_only(false);
@ -72,6 +73,13 @@ bool DSMDialog::checkVar(const string& var_name, const string& var_val) {
}
void DSMDialog::onInvite(const AmSipRequest& req) {
if (!process_invite) {
// re-INVITEs
AmB2BCallerSession::onInvite(req);
return;
}
process_invite = false;
bool run_session_invite = engine.onInvite(req, this);
if (DSMFactory::RunInviteEvent) {
@ -88,17 +96,24 @@ void DSMDialog::onInvite(const AmSipRequest& req) {
void DSMDialog::onSessionStart(const AmSipRequest& req)
{
AmB2BCallerSession::onSessionStart(req);
DBG("DSMDialog::onSessionStart\n");
startSession();
if (process_sessionstart) {
process_sessionstart = false;
AmB2BCallerSession::onSessionStart(req);
DBG("DSMDialog::onSessionStart\n");
startSession();
}
}
void DSMDialog::onSessionStart(const AmSipReply& rep)
{
DBG("DSMDialog::onSessionStart (SEMS originator mode)\n");
invite_req.body = rep.body;
if (process_sessionstart) {
process_sessionstart = false;
DBG("DSMDialog::onSessionStart (SEMS originator mode)\n");
invite_req.body = rep.body;
startSession();
startSession();
}
}
void DSMDialog::startSession(){

@ -50,6 +50,9 @@ class DSMDialog : public AmB2BCallerSession,
string startDiagName;
AmPlaylist playlist;
bool process_invite;
bool process_sessionstart;
vector<AmAudio*> audiofiles;
AmAudioFile* rec_file;
map<string, AmPromptCollection*> prompt_sets;

Loading…
Cancel
Save