Juha,
attaching patch seems to solve the issue for me (not tested, just tried).

Anyway this is just unclean fix attempt and should be done better way (callback
called from AmSession::setStopped isntead of trying to presume
AmB2BSession/AmSession behavior). I will do it correct way later on. If you need
to have it in the repository immediately, feel free to commit the patch. If you
can wait some time (no clue how long) then wait please for a better fix.

        Vaclav

On Út, úno 12, 2013 at 08:24:40 +0200, Juha Heinanen wrote:
> Václav Kubart writes:
> 
> > I would say that calling CCEnd twice is really my fault - I just wanted to 
> > do
> > call termination cleaner but didn't fully got existing status. I will look 
> > on
> > it.
> 
> thanks vaclav and as i mentioned in my last message, trying to end the
> call twice happens only when call is terminated by b leg.
> 
> -- juha
diff --git a/apps/sbc/CallLeg.cpp b/apps/sbc/CallLeg.cpp
index 4a50912..e1fcded 100644
--- a/apps/sbc/CallLeg.cpp
+++ b/apps/sbc/CallLeg.cpp
@@ -892,6 +892,7 @@ void CallLeg::onRemoteDisappeared(const AmSipReply& reply)
     // only in case we are really connected (called on timeout or 481 from the 
remote)
 
     DBG("remote unreachable, ending B2BUA call\n");
+    onCallStopped(); // needs to be called explicitly here
     clearRtpReceiverRelay(); // FIXME: shouldn't be cleared in AmB2BSession as 
well?
     AmB2BSession::onRemoteDisappeared(reply); // terminates the other leg
     updateCallStatus(Disconnected);
diff --git a/apps/sbc/SBCCallLeg.cpp b/apps/sbc/SBCCallLeg.cpp
index e3c51f7..bb8496f 100644
--- a/apps/sbc/SBCCallLeg.cpp
+++ b/apps/sbc/SBCCallLeg.cpp
@@ -841,7 +841,7 @@ void SBCCallLeg::onCallStopped() {
 
 void SBCCallLeg::onOtherBye(const AmSipRequest& req)
 {
-  onCallStopped();
+  //onCallStopped();
 
   CallLeg::onOtherBye(req);
 }
@@ -860,7 +860,7 @@ void SBCCallLeg::onNoAck(unsigned int cseq) {
 
 void SBCCallLeg::onRemoteDisappeared(const AmSipReply& reply)  {
   DBG("Remote unreachable - ending SBC call\n");
-  onCallStopped();
+  //onCallStopped();
 
   CallLeg::onRemoteDisappeared(reply);
 }
@@ -876,8 +876,9 @@ void SBCCallLeg::onBye(const AmSipRequest& req)
 
 void SBCCallLeg::onCancel(const AmSipRequest& cancel)
 {
-  dlg->bye();
-  stopCall();
+  //dlg->bye();
+  //stopCall();
+  CallLeg::onCancel(cancel);
 }
 
 void SBCCallLeg::onSystemEvent(AmSystemEvent* ev) {
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to