diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index 0334461383f8aad400b244c248562cea622c434c..e53e6e75f8da0f6d1bdcd2805fbf5fd0e6da848d 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -198,7 +198,7 @@ void ManagerImpl::terminate () _debug ("Manager: Unload audio codecs "); _audioCodecFactory.deleteHandlePointer(); - + audioLayerMutexUnlock(); } bool ManagerImpl::isCurrentCall (const std::string& callId) diff --git a/sflphone-common/src/sip/sdp.cpp b/sflphone-common/src/sip/sdp.cpp index 91e44a92d27fc0dee23f12a632ffc21233032d47..8c4b23fba6736aed0516f08cc9a0c60210d7f139 100644 --- a/sflphone-common/src/sip/sdp.cpp +++ b/sflphone-common/src/sip/sdp.cpp @@ -648,7 +648,6 @@ Sdp::~Sdp() for (iter = localAudioMediaCap_.begin(); iter != localAudioMediaCap_.end(); ++iter) delete *iter; - pj_pool_release (memPool_); } diff --git a/sflphone-common/src/sip/sipcall.cpp b/sflphone-common/src/sip/sipcall.cpp index b577d77c6ef42760d9c18214d43da06ac8e31225..f68b1f465199d6106ad24f065d5d16635091d3b2 100644 --- a/sflphone-common/src/sip/sipcall.cpp +++ b/sflphone-common/src/sip/sipcall.cpp @@ -48,7 +48,7 @@ SIPCall::SIPCall (const std::string& id, Call::CallType type, pj_caching_pool *c , _invSession (NULL) , pool_(pj_pool_create(&caching_pool->factory, id.c_str(), CALL_MEMPOOL_INIT_SIZE, CALL_MEMPOOL_INC_SIZE, NULL)) - , local_sdp_(pool_) + , local_sdp_(new Sdp(pool_)) { _debug ("SIPCall: Create new call %s", id.c_str()); } @@ -58,6 +58,8 @@ SIPCall::~SIPCall() _debug ("SIPCall: Delete call"); _debug ("SDP: pool capacity %d", pj_pool_get_capacity (pool_)); _debug ("SDP: pool size %d", pj_pool_get_used_size (pool_)); + delete local_sdp_; + pj_pool_release (pool_); delete _audiortp; } diff --git a/sflphone-common/src/sip/sipcall.h b/sflphone-common/src/sip/sipcall.h index 083cc6f386fc6478b7df0bf0ab9eddbbb1bce437..40c451dfadc6bf87cc1e4ed9b342b6fe4d481b46 100644 --- a/sflphone-common/src/sip/sipcall.h +++ b/sflphone-common/src/sip/sipcall.h @@ -33,13 +33,13 @@ #define SIPCALL_H #include "call.h" -#include "sdp.h" #include <cassert> class pjsip_evsub; class pj_caching_pool; class pj_pool_t; class pjsip_inv_session; +class Sdp; namespace sfl { @@ -96,7 +96,7 @@ class SIPCall : public Call * Return the local SDP session */ Sdp* getLocalSDP (void) { - return &local_sdp_; + return local_sdp_; } /** @@ -169,7 +169,7 @@ class SIPCall : public Call /** * The SDP session */ - Sdp local_sdp_; + Sdp *local_sdp_; }; #endif diff --git a/sflphone-common/test/sdptest.cpp b/sflphone-common/test/sdptest.cpp index e701b79b297196591cf3ee3f49745e1a7f7a134a..9f4a61047979af0f487ac8ae419208dee6859da8 100644 --- a/sflphone-common/test/sdptest.cpp +++ b/sflphone-common/test/sdptest.cpp @@ -114,6 +114,7 @@ void SDPTest::tearDown() { delete _session; _session = NULL; + pj_pool_release (_testPool); }