From ae8a4707b884804de9a6220111dec5cac778e0e6 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 12 Apr 2011 15:03:01 +0200 Subject: [PATCH] CANCEL should be treated hop-by-hop. --- core/AmB2BSession.cpp | 9 +++++++++ core/AmB2BSession.h | 1 + 2 files changed, 10 insertions(+) diff --git a/core/AmB2BSession.cpp b/core/AmB2BSession.cpp index c053fd45..f69ec88e 100644 --- a/core/AmB2BSession.cpp +++ b/core/AmB2BSession.cpp @@ -939,6 +939,15 @@ void AmB2BCallerSession::onSessionStart(const AmSipRequest& req) AmB2BSession::onSessionStart(req); } +void AmB2BCallerSession::onCancel() +{ + if(dlg.getStatus() == AmSipDialog::Pending) { + terminateOtherLeg(); + terminateLeg(); + dlg.reply(invite_req, 487, "Request terminated"); + } +} + void AmB2BCallerSession::connectCallee(const string& remote_party, const string& remote_uri, bool relayed_invite) diff --git a/core/AmB2BSession.h b/core/AmB2BSession.h index 11faa2e8..525e4bfa 100644 --- a/core/AmB2BSession.h +++ b/core/AmB2BSession.h @@ -308,6 +308,7 @@ class AmB2BCallerSession: public AmB2BSession // @see AmSession void onSessionStart(const AmSipRequest& req); + void onCancel(); // @see AmB2BSession void terminateLeg();