diff --git a/src/audio/audiortp.cpp b/src/audio/audiortp.cpp index b85805c167478c52c4825e1446dc09f4bcc1ee25..03e1e7607afdbe9a2d17a960f5190c623574ab74 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 18508b92d7caf86f8363d010d396a4f813c923fd..c7b1488e4a2833b6e139fb3bb837941d4154d8ff 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 171e9e5a2fbf65d3576f857fcca459dd102efdfd..edb94b6c9ea4563e3b1df4c5e1d0bf351a7e7b06 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 ada5d845ee9ad753968ed27839b85d6e153a19d6..1844cf0cd142aaaa22bb2e068b10f869bd477da9 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(); } }