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

Reply via email to