From fb86cab1bd00ec1f836540e8cffbb0b8740e45e7 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 11 Apr 2011 16:25:26 +0200 Subject: [PATCH] b/f: fixes INV w/ immediate CANCEL use-case. --- apps/sbc/SBC.cpp | 5 +---- core/AmB2BSession.cpp | 12 +++++++++++- core/AmSipDispatcher.cpp | 2 +- core/SipCtrlInterface.cpp | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/apps/sbc/SBC.cpp b/apps/sbc/SBC.cpp index 5da47df6..65f8d6ee 100644 --- a/apps/sbc/SBC.cpp +++ b/apps/sbc/SBC.cpp @@ -878,11 +878,8 @@ void SBCDialog::onBye(const AmSipRequest& req) void SBCDialog::onCancel() { if(dlg.getStatus() == AmSipDialog::Pending) { - DBG("Wait for leg B to terminate"); - } else { - DBG("Canceling leg A on CANCEL since dialog is not pending"); + stopCall(); dlg.reply(invite_req, 487, "Request terminated"); - setStopped(); } } diff --git a/core/AmB2BSession.cpp b/core/AmB2BSession.cpp index 3a32b60c..c053fd45 100644 --- a/core/AmB2BSession.cpp +++ b/core/AmB2BSession.cpp @@ -843,8 +843,18 @@ void AmB2BCallerSession::onB2BEvent(B2BEvent* ev) AmSipReply& reply = ((B2BSipReplyEvent*)ev)->reply; + if(other_id.empty()){ + DBG("Discarding B2BSipReply from other leg (other_id empty)\n"); + DBG("reply code=%i; method=%s; callid=%s; local_tag=%s; " + "remote_tag=%s; cseq=%i\n", + reply.code,reply.method.c_str(),reply.callid.c_str(),reply.local_tag.c_str(), + reply.remote_tag.c_str(),reply.cseq); + return; + } + if(other_id != reply.local_tag){ - DBG("Dialog mismatch!\n"); + DBG("Dialog mismatch! (oi=%s;lt=%s)\n", + other_id.c_str(),reply.local_tag.c_str()); return; } diff --git a/core/AmSipDispatcher.cpp b/core/AmSipDispatcher.cpp index f0283a06..9248e8b1 100644 --- a/core/AmSipDispatcher.cpp +++ b/core/AmSipDispatcher.cpp @@ -51,7 +51,7 @@ void AmSipDispatcher::handleSipMsg(AmSipReply &reply) "unhandled SIP reply: %s\n", reply.print().c_str()); } } else { - ERROR("unhandled SIP reply: %s\n", reply.print().c_str()); + WARN("unhandled SIP reply: %s\n", reply.print().c_str()); } delete ev; } diff --git a/core/SipCtrlInterface.cpp b/core/SipCtrlInterface.cpp index e8eeddb7..ee5c3052 100644 --- a/core/SipCtrlInterface.cpp +++ b/core/SipCtrlInterface.cpp @@ -690,7 +690,7 @@ void SipCtrlInterface::handle_reply_timeout(AmSipTimeoutEvent::EvType evt, } if(!AmEventDispatcher::instance()->post(c2stlstr(tr->to_tag), tmo_evt)){ - ERROR("Could not post timeout event (sess. id: %.*s)\n",tr->to_tag.len,tr->to_tag.s); + DBG("Could not post timeout event (sess. id: %.*s)\n",tr->to_tag.len,tr->to_tag.s); delete tmo_evt; } }