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_;