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

Reply via email to