Module: sems
Branch: master
Commit: 773dbbf84c960814ea7a4ab3f3b3556fa3c2de8b
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=773dbbf84c960814ea7a4ab3f3b3556fa3c2de8b

Author: Raphael Coeffic <[email protected]>
Committer: Raphael Coeffic <[email protected]>
Date:   Mon Jan 14 12:40:12 2013 +0100

do not terminate session until all dialog usages are finished.

---

 core/AmSession.cpp |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/core/AmSession.cpp b/core/AmSession.cpp
index 8b5f4f5..91f1dc7 100644
--- a/core/AmSession.cpp
+++ b/core/AmSession.cpp
@@ -369,11 +369,12 @@ bool AmSession::processEventsCatchExceptions() {
     this should be called until it returns false. */
 bool AmSession::processingCycle() {
 
-  DBG("vv S [%s|%s] %s, %s, %i UACTransPending vv\n",
+  DBG("vv S [%s|%s] %s, %s, %i UACTransPending, %i usages vv\n",
       dlg->callid.c_str(),getLocalTag().c_str(),
       dlg->getStatusStr(),
       sess_stopped.get()?"stopped":"running",
-      dlg->getUACTransPending());
+      dlg->getUACTransPending(),
+      dlg->getUsages());
 
   switch (processing_status) {
   case SESSION_PROCESSING_EVENTS: 
@@ -387,14 +388,16 @@ bool AmSession::processingCycle() {
       AmSipDialog::Status dlg_status = dlg->getStatus();
       bool s_stopped = sess_stopped.get();
       
-      DBG("^^ S [%s|%s] %s, %s, %i UACTransPending ^^\n",
+      DBG("^^ S [%s|%s] %s, %s, %i UACTransPending, %i usages ^^\n",
          dlg->callid.c_str(),getLocalTag().c_str(),
          AmBasicSipDialog::getStatusStr(dlg_status),
          s_stopped?"stopped":"running",
-         dlg->getUACTransPending());
+         dlg->getUACTransPending(),
+         dlg->getUsages());
       
       // session running?
-      if (!s_stopped || (dlg_status == AmSipDialog::Disconnecting))
+      if (!s_stopped || (dlg_status == AmSipDialog::Disconnecting)
+         || dlg->getUsages())
        return true;
       
       // session stopped?
@@ -435,11 +438,12 @@ bool AmSession::processingCycle() {
     if (!res)
       processing_status = SESSION_ENDED_DISCONNECTED;
 
-    DBG("^^ S [%s|%s] %s, %s, %i UACTransPending ^^\n",
+    DBG("^^ S [%s|%s] %s, %s, %i UACTransPending, %i usages ^^\n",
        dlg->callid.c_str(),getLocalTag().c_str(),
        dlg->getStatusStr(),
        sess_stopped.get()?"stopped":"running",
-       dlg->getUACTransPending());
+       dlg->getUACTransPending(),
+       dlg->getUsages());
 
     return res;
   }; break;

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to