diff --git a/daemon/src/sip/sipcall.cpp b/daemon/src/sip/sipcall.cpp index d4701472b5aa77bb38cc67f4739503bb8ecff223..abc3032c1cc193ffdb22b03e07f9bfa31bc29513 100644 --- a/daemon/src/sip/sipcall.cpp +++ b/daemon/src/sip/sipcall.cpp @@ -110,7 +110,8 @@ SIPCall::SIPCall(const std::string& id, Call::CallType type, SIPCall::~SIPCall() { - delete local_sdp_; + // local sdp must be destroyed before pool + local_sdp_.reset(); pj_pool_release(pool_); } diff --git a/daemon/src/sip/sipcall.h b/daemon/src/sip/sipcall.h index 2ac8f7e93b64f3e49e010733704143328edb2096..5c8079d3372d111c3a8e3c794ae2ba7549b4bcae 100644 --- a/daemon/src/sip/sipcall.h +++ b/daemon/src/sip/sipcall.h @@ -46,6 +46,8 @@ #include "pjsip/sip_config.h" +#include <memory> + struct pjsip_evsub; struct pj_caching_pool; struct pj_pool_t; @@ -202,7 +204,7 @@ class SIPCall : public Call { /** * The SDP session */ - Sdp* local_sdp_; + std::unique_ptr<Sdp> local_sdp_; char contactBuffer_[PJSIP_MAX_URL_SIZE]; pj_str_t contactHeader_;