Author: sayer
Date: 2009-03-25 01:05:33 +0100 (Wed, 25 Mar 2009)
New Revision: 1327
Modified:
trunk/apps/dsm/DSMDialog.cpp
trunk/apps/dsm/DSMDialog.h
Log:
don't restart DSM on re-INVITE
Modified: trunk/apps/dsm/DSMDialog.cpp
===================================================================
--- trunk/apps/dsm/DSMDialog.cpp 2009-03-24 16:31:08 UTC (rev 1326)
+++ trunk/apps/dsm/DSMDialog.cpp 2009-03-25 00:05:33 UTC (rev 1327)
@@ -36,7 +36,8 @@
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 @@
}
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::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(){
Modified: trunk/apps/dsm/DSMDialog.h
===================================================================
--- trunk/apps/dsm/DSMDialog.h 2009-03-24 16:31:08 UTC (rev 1326)
+++ trunk/apps/dsm/DSMDialog.h 2009-03-25 00:05:33 UTC (rev 1327)
@@ -50,6 +50,9 @@
string startDiagName;
AmPlaylist playlist;
+ bool process_invite;
+ bool process_sessionstart;
+
vector<AmAudio*> audiofiles;
AmAudioFile* rec_file;
map<string, AmPromptCollection*> prompt_sets;
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev