Module: sems Branch: sayer/offer_answer Commit: ca252356675d334035ab694f8f42bb4b2d5a5f0b URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=ca252356675d334035ab694f8f42bb4b2d5a5f0b
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Tue Oct 19 22:51:17 2010 +0200 fixed: announce_transfer --- apps/announce_transfer/AnnounceTransfer.cpp | 30 ++++++++++++++++---------- apps/announce_transfer/AnnounceTransfer.h | 3 +- core/AmSipDialog.cpp | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/apps/announce_transfer/AnnounceTransfer.cpp b/apps/announce_transfer/AnnounceTransfer.cpp index bba93a3..2ea1b54 100644 --- a/apps/announce_transfer/AnnounceTransfer.cpp +++ b/apps/announce_transfer/AnnounceTransfer.cpp @@ -99,15 +99,8 @@ AnnounceTransferDialog::~AnnounceTransferDialog() { } -void AnnounceTransferDialog::onSessionStart(const AmSipRequest& req) -{ - // we can drop all received packets - // this disables DTMF detection as well - setReceiving(false); - - DBG("AnnounceTransferDialog::onSessionStart\n"); +void AnnounceTransferDialog::onInvite(const AmSipRequest& req) { if (status == Disconnected) { - status = Announcing; callee_uri = get_session_param(req.hdrs, "Refer-To"); if (!callee_uri.length()) { callee_uri = getHeader(req.hdrs, "P-Refer-To", true); @@ -119,11 +112,25 @@ void AnnounceTransferDialog::onSessionStart(const AmSipRequest& req) if (!callee_uri.length()) callee_uri = req.r_uri; DBG("transfer uri set to '%s'\n", callee_uri.c_str()); + } + + AmSession::onInvite(req); +} + +void AnnounceTransferDialog::onSessionStart() +{ + // we can drop all received packets + // this disables DTMF detection as well + setReceiving(false); + + DBG("AnnounceTransferDialog::onSessionStart\n"); + if (status == Disconnected) { + status = Announcing; startSession(); } } -void AnnounceTransferDialog::startSession(){ +void AnnounceTransferDialog::startSession() { if(wav_file.open(filename,AmAudioFile::Read)) throw string("AnnounceTransferDialog::onSessionStart: Cannot open file\n"); @@ -132,8 +139,6 @@ void AnnounceTransferDialog::startSession(){ void AnnounceTransferDialog::onSipRequest(const AmSipRequest& req) { - AmSession::onSipRequest(req); - if((status == Transfering || status == Hangup) && (req.method == "NOTIFY")) { try { @@ -175,8 +180,9 @@ void AnnounceTransferDialog::onSipRequest(const AmSipRequest& req) } catch (const AmSession::Exception& e) { dlg.reply(req, e.code, e.reason, "", ""); } + } else { + AmSession::onSipRequest(req); } - } void AnnounceTransferDialog::onSipReply(const AmSipReply& rep, AmSipDialog::Status old_dlg_status) { diff --git a/apps/announce_transfer/AnnounceTransfer.h b/apps/announce_transfer/AnnounceTransfer.h index ef309b1..0f7caf2 100644 --- a/apps/announce_transfer/AnnounceTransfer.h +++ b/apps/announce_transfer/AnnounceTransfer.h @@ -66,7 +66,8 @@ public: AnnounceTransferDialog(const string& filename); ~AnnounceTransferDialog(); - void onSessionStart(const AmSipRequest& req); + void onInvite(const AmSipRequest& req); + void onSessionStart(); void startSession(); void onBye(const AmSipRequest& req); void onSipRequest(const AmSipRequest& req); diff --git a/core/AmSipDialog.cpp b/core/AmSipDialog.cpp index 0f8f9d9..ab8f768 100644 --- a/core/AmSipDialog.cpp +++ b/core/AmSipDialog.cpp @@ -905,7 +905,7 @@ int AmSipDialog::update(const string &cont_type, int AmSipDialog::refer(const string& refer_to, int expires) { - if(status != Connected) { + if(status == Connected) { string hdrs = SIP_HDR_COLSP(SIP_HDR_REFER_TO) + refer_to + CRLF; if (expires>=0) hdrs+= SIP_HDR_COLSP(SIP_HDR_EXPIRES) + int2str(expires) + CRLF; _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
