From ea31864ed16797a535ad5ad7588cfc67a0e3cf80 Mon Sep 17 00:00:00 2001 From: Tristan Matthews <tristan.matthews@savoirfairelinux.com> Date: Tue, 7 Aug 2012 15:44:13 -0400 Subject: [PATCH] * #14444: sip: don't use call object after deleting it --- daemon/src/sip/sipvoiplink.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp index 113f84e060..361625bbba 100644 --- a/daemon/src/sip/sipvoiplink.cpp +++ b/daemon/src/sip/sipvoiplink.cpp @@ -1339,7 +1339,7 @@ SIPVoIPLink::SIPCallServerFailure(SIPCall *call) void SIPVoIPLink::SIPCallClosed(SIPCall *call) { - std::string id(call->getCallId()); + const std::string id(call->getCallId()); stopRtpIfCurrent(id, *call); @@ -1500,8 +1500,11 @@ void sdp_media_update_cb(pjsip_inv_session *inv, pj_status_t status) if (status != PJ_SUCCESS) { WARN("Could not negotiate offer"); - SIPVoIPLink::instance()->hangup(call->getCallId()); - Manager::instance().callFailure(call->getCallId()); + const std::string callID(call->getCallId()); + SIPVoIPLink::instance()->hangup(callID); + // call is now a dangling pointer after calling hangup + call = 0; + Manager::instance().callFailure(callID); return; } -- GitLab