From 300783be254a103b24eece4f4b9cbc4a86d6fa40 Mon Sep 17 00:00:00 2001
From: yanmorin <yanmorin>
Date: Fri, 14 Oct 2005 15:33:34 +0000
Subject: [PATCH] Call "establish" message Add url to tonezone web site

---
 src/audio/audiortp.cpp           |  6 +++++-
 src/audio/tonegenerator.cpp      | 14 ++++++++++----
 src/gui/server/guiserverimpl.cpp |  2 +-
 src/managerimpl.cpp              |  5 +++--
 4 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/audio/audiortp.cpp b/src/audio/audiortp.cpp
index b85805c167..03e1e7607a 100644
--- a/src/audio/audiortp.cpp
+++ b/src/audio/audiortp.cpp
@@ -118,7 +118,11 @@ AudioRtpRTX::AudioRtpRTX (SipCall *sipcall,
 }
 
 AudioRtpRTX::~AudioRtpRTX () {
-  terminate();
+  try {
+    terminate();
+  } catch (...) {
+    _debug("AudioRtpRTX: try to terminate, but catch an exception...\n");
+  }
   _debug("Thread: AudioRtpRTX stop session\n");
   if (!_sym) {
     delete _sessionRecv; _sessionRecv = NULL;
diff --git a/src/audio/tonegenerator.cpp b/src/audio/tonegenerator.cpp
index 18508b92d7..c7b1488e4a 100644
--- a/src/audio/tonegenerator.cpp
+++ b/src/audio/tonegenerator.cpp
@@ -45,7 +45,11 @@ ToneThread::ToneThread (int16 *buf, int size) : ost::Thread () {
 }
 
 ToneThread::~ToneThread (void) {
-  terminate();
+  try {
+    terminate();
+  } catch (...) {
+    _debug("ToneThread: try to terminate, but catch an exception...\n");
+  }
   delete[] buf_ctrl_vol; buf_ctrl_vol=NULL;
 }
 
@@ -109,12 +113,13 @@ ToneGenerator::~ToneGenerator (void) {
 
 /**
  * Initialisation of ring tone for supported zone
+ * http://nemesis.lonestar.org/reference/telecom/signaling/busy.html
  */
 void
 ToneGenerator::initTone (void) {
 	toneZone[ID_NORTH_AMERICA][ZT_TONE_DIALTONE] = "350+440";
 	toneZone[ID_NORTH_AMERICA][ZT_TONE_BUSY] = "480+620/500,0/500";
-	toneZone[ID_NORTH_AMERICA][ZT_TONE_RINGTONE] = "440+480/2000,0/2000";
+	toneZone[ID_NORTH_AMERICA][ZT_TONE_RINGTONE] = "440+480/2000,0/4000";
 	toneZone[ID_NORTH_AMERICA][ZT_TONE_CONGESTION] = "480+620/250,0/250"; 
 
 	toneZone[ID_FRANCE][ZT_TONE_DIALTONE] = "440";
@@ -326,9 +331,10 @@ void
 ToneGenerator::stopTone() {
   _currentTone = ZT_TONE_NULL;
 
-  // we end the last thread
-  _debug("Thread: stop tonethread\n");
+  _debug("Thread: delete tonethread\n");
   delete tonethread; tonethread = NULL;
+  // we end the last thread
+  _debug("Thread: tonethread deleted\n");
 }
 
 /**
diff --git a/src/gui/server/guiserverimpl.cpp b/src/gui/server/guiserverimpl.cpp
index 171e9e5a2f..edb94b6c9e 100644
--- a/src/gui/server/guiserverimpl.cpp
+++ b/src/gui/server/guiserverimpl.cpp
@@ -317,7 +317,7 @@ GUIServerImpl::peerAnsweredCall (CALLID id)
 {
   CallMap::iterator iter = _callMap.find(id);
   if ( iter != _callMap.end() ) {
-    _requestManager.sendResponse(ResponseMessage("200", iter->second.sequenceId(), "OK"));
+    _requestManager.sendResponse(ResponseMessage("200", iter->second.sequenceId(), "Established"));
   }
 }
 
diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp
index ada5d845ee..1844cf0cd1 100644
--- a/src/managerimpl.cpp
+++ b/src/managerimpl.cpp
@@ -809,12 +809,13 @@ ManagerImpl::playATone(unsigned int tone) {
 void 
 ManagerImpl::stopTone() {
   if (isDriverLoaded()) {
-    ost::MutexLock m(_toneMutex);
+    _toneMutex.enterMutex();
     if ( _toneType != ZT_TONE_NULL ) {
       _toneType = ZT_TONE_NULL;
       _tone->stopTone();
-      getAudioDriver()->stopStream();
     }
+    _toneMutex.leaveMutex();
+    getAudioDriver()->stopStream();
   }
 }
 
-- 
GitLab