diff --git a/configure.ac b/configure.ac index 10310953d8f7a35039d3d0fbd67f77c4814fbf5e..8b0e10a50fc5394f5d35b813aa88e5b7932e8db0 100644 --- a/configure.ac +++ b/configure.ac @@ -148,6 +148,7 @@ sflphone.spec \ sflphoned-fedora.spec \ Makefile \ src/Makefile \ +src/sflphone \ src/audio/Makefile \ src/audio/gsm/Makefile \ src/audio/pacpp/Makefile \ diff --git a/src/Makefile.am b/src/Makefile.am index 705794de16efad0f6fe5d75bf6202984952ae009..9c497591a49be152bc0cea4039de059949ea5e1c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,5 @@ -bin_PROGRAMS = sflphoned +libexec_PROGRAMS = sflphoned +bin_SCRIPTS = sflphone if USE_ZEROCONF ZEROCONFDIR = zeroconf diff --git a/src/global.h b/src/global.h index 268be3db2650dd5e81cb88c5573c6369be08d1dd..22b59e440cf963304f1c11ea8aa54ab1be35fee3 100644 --- a/src/global.h +++ b/src/global.h @@ -44,10 +44,11 @@ typedef short int16; #define SFLPHONED_VERSION "0.5" #define SFLPHONED_VERSIONNUM 0x000500 -#define PROGNAME "sflphoned" -#define PROGDIR "sflphone" -#define RINGDIR "ringtones" -#define CODECDIR "codecs" +#define PROGNAME "sflphoned" +#define PROGNAME_GLOBAL "sflphone" +#define PROGDIR "sflphone" +#define RINGDIR "ringtones" +#define CODECDIR "codecs" #define MONO 1 #define CHANNELS 2 diff --git a/src/gui/server/request.h b/src/gui/server/request.h index 37c54915169ae5d745d3dd9548ebb7525f871ce0..f41675637d89ef1bac114461e0e443ac7b0544fe 100644 --- a/src/gui/server/request.h +++ b/src/gui/server/request.h @@ -71,8 +71,8 @@ public: iter = _argList.begin(); if (iter != _argList.end() && iter->length() != 0) { _callId = *iter; - iter++; // last arg is the destination + iter++; if (iter != _argList.end()) { _destination = *iter; argsAreValid = true; diff --git a/src/gui/server/requestconfig.cpp b/src/gui/server/requestconfig.cpp index 490792b19bd64d8ed4bace940ec90ccd6f2b77be..6b75a34ad6248f779ce9b6b54fb11002b973de1f 100644 --- a/src/gui/server/requestconfig.cpp +++ b/src/gui/server/requestconfig.cpp @@ -95,7 +95,7 @@ RequestConfigGet::RequestConfigGet(const std::string &sequenceId, const TokenLis if (iter != _argList.end()) { _section = *iter; _argList.pop_front(); - iter++; + iter = _argList.begin(); if (iter != _argList.end()) { _name = *iter; _argList.pop_front(); @@ -128,11 +128,11 @@ RequestConfigSet::RequestConfigSet(const std::string &sequenceId, const TokenLis if (iter != _argList.end()) { _section = *iter; _argList.pop_front(); - iter++; + iter = _argList.begin(); if (iter != _argList.end()) { _name = *iter; _argList.pop_front(); - iter++; + iter = _argList.begin(); if (iter != _argList.end()) { _value = *iter; _argList.pop_front(); diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index de32f5a56476c2d40f8a2d05e39d7de0a1ee1186..4aaa0ac2ed32da44f4c3825783310cdd1598feea 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -816,6 +816,46 @@ ManagerImpl::peerHungupCall (CALLID id) return 1; } +/** + * Multi Thread + */ +void +ManagerImpl::callBusy(CALLID id) { + _debug("%10d: Call is busy\n", id); + playATone(Tone::TONE_BUSY); + ost::MutexLock m(_mutex); + Call* call = getCall(id); + if (call != 0) { + call->setState(Call::Busy); + } + deleteCall(id); + call->setState(Call::Hungup); + + removeCallFromCurrent(id); +} + +/** + * Multi Thread + */ +void +ManagerImpl::callFailure(CALLID id) { + _debug("%10d: Call failed\n", id); + playATone(Tone::TONE_BUSY); + _mutex.enterMutex(); + Call* call = getCall(id); + if (call != 0) { + call->setState(Call::Error); + } + _mutex.leaveMutex(); + if (_gui) { + _gui->callFailure(id); + } + deleteCall(id); + call->setState(Call::Hungup); + + removeCallFromCurrent(id); +} + /** * SipEvent Thread * for outgoing call, send by SipEvent @@ -996,38 +1036,6 @@ ManagerImpl::ringtone() } } -/** - * Multi Thread - */ -void -ManagerImpl::callBusy(CALLID id) { - _debug("%10d: Call is busy\n", id); - playATone(Tone::TONE_BUSY); - ost::MutexLock m(_mutex); - Call* call = getCall(id); - if (call != 0) { - call->setState(Call::Busy); - } -} - -/** - * Multi Thread - */ -void -ManagerImpl::callFailure(CALLID id) { - _debug("%10d: Call failed\n", id); - playATone(Tone::TONE_BUSY); - _mutex.enterMutex(); - Call* call = getCall(id); - if (call != 0) { - call->setState(Call::Error); - } - _mutex.leaveMutex(); - if (_gui) { - _gui->callFailure(id); - } -} - AudioLoop* ManagerImpl::getTelephoneTone() { diff --git a/src/sipvoiplink.cpp b/src/sipvoiplink.cpp index ffb6239403cd093d9e2bd66d1daa199c5587aae8..aa1643ed3c6dfa8781ebb5cd0738518eb6529e8a 100644 --- a/src/sipvoiplink.cpp +++ b/src/sipvoiplink.cpp @@ -97,7 +97,7 @@ SipVoIPLink::init(void) _debug("VoIP Link listen on port %d\n", DEFAULT_SIP_PORT); } // Set user agent - std::string tmp = std::string(PROGNAME) + "/" + std::string(SFLPHONED_VERSION); + std::string tmp = std::string(PROGNAME_GLOBAL) + "/" + std::string(SFLPHONED_VERSION); eXosip_set_user_agent(tmp.data()); // If use STUN server, firewall address setup @@ -806,6 +806,14 @@ SipVoIPLink::getEvent (void) case EXOSIP_CALL_RELEASED: if (event) { _debug("SIP call released: [cid = %d, did = %d]\n", event->cid, event->did); + id = findCallId(event); + if (id!=0) { + // not supposed to be execute on a current call... + _debug("send a call failure..."); + Manager::instance().callFailure(id); + deleteSipCall(id); + } + } //id = findCallId(event); //if (id!=0) { @@ -843,10 +851,12 @@ SipVoIPLink::getEvent (void) //Manager::instance().displayError(event->response->reason_phrase); Manager::instance().displayErrorText(id, event->response->reason_phrase); Manager::instance().callFailure(id); + deleteSipCall(id); break; case BUSY_HERE: Manager::instance().displayErrorText(id, event->response->reason_phrase); Manager::instance().callBusy(id); + deleteSipCall(id); break; case REQ_TERMINATED: break; diff --git a/utilspp/functor/Makefile.am b/utilspp/functor/Makefile.am index a34251953fd3b5fccae3ad40c894d316a2f84712..0ca9eff77d01187ddd28ab87c57383c4a5e7921b 100644 --- a/utilspp/functor/Makefile.am +++ b/utilspp/functor/Makefile.am @@ -1,9 +1,9 @@ -pkginclude_HEADERS = \ - Binder.hpp Binder.inl \ - FunctorHandler.hpp \ - Functor.hpp \ - FunctorImpl.hpp \ - Functor.inl \ - MemFunHandler.hpp +#pkginclude_HEADERS = \ +# Binder.hpp Binder.inl \ +# FunctorHandler.hpp \ +# Functor.hpp \ +# FunctorImpl.hpp \ +# Functor.inl \ +# MemFunHandler.hpp -pkgincludedir=$(includedir)/utilspp/functor +#pkgincludedir=$(includedir)/utilspp/functor diff --git a/utilspp/singleton/Makefile.am b/utilspp/singleton/Makefile.am index 7f8091d27318796938506c9e3ba1778bd6d51640..0488bfec1b67429864f4fac8f0f6bb12fa91a521 100644 --- a/utilspp/singleton/Makefile.am +++ b/utilspp/singleton/Makefile.am @@ -10,14 +10,14 @@ libsingleton_la_SOURCES = \ SingletonHolder.hpp SingletonHolder.inl -pkginclude_HEADERS = \ - CreationStatic.hpp CreationStatic.inl \ - CreationUsingNew.hpp CreationUsingNew.inl \ - LifetimeDefault.hpp LifetimeDefault.inl \ - LifetimeLibrary.hpp LifetimeLibrary.inl \ - LifetimeWithLongevity.hpp LifetimeWithLongevity.inl \ - PrivateMembers.hpp PrivateMembers.inl \ - SingletonHolder.hpp SingletonHolder.inl +#pkginclude_HEADERS = \ +# CreationStatic.hpp CreationStatic.inl \ +# CreationUsingNew.hpp CreationUsingNew.inl \ +# LifetimeDefault.hpp LifetimeDefault.inl \ +# LifetimeLibrary.hpp LifetimeLibrary.inl \ +# LifetimeWithLongevity.hpp LifetimeWithLongevity.inl \ +# PrivateMembers.hpp PrivateMembers.inl \ +# SingletonHolder.hpp SingletonHolder.inl -pkgincludedir=$(includedir)/utilspp/singleton +#pkgincludedir=$(includedir)/utilspp/singleton