From 5107f170d103593545cb15f38958922bbe5502ff Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Wed, 15 Aug 2012 15:52:03 -0400
Subject: [PATCH] #14615: Clear call map in voip destructorw

---
 daemon/src/iax/iaxvoiplink.cpp | 3 ++-
 daemon/src/iax/iaxvoiplink.h   | 2 +-
 daemon/src/sip/sipvoiplink.cpp | 4 +++-
 daemon/src/sip/sipvoiplink.h   | 2 +-
 daemon/src/voiplink.h          | 4 ++--
 5 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/daemon/src/iax/iaxvoiplink.cpp b/daemon/src/iax/iaxvoiplink.cpp
index 647608ceef..66221b7985 100644
--- a/daemon/src/iax/iaxvoiplink.cpp
+++ b/daemon/src/iax/iaxvoiplink.cpp
@@ -68,6 +68,7 @@ IAXVoIPLink::~IAXVoIPLink()
     handlingEvents_ = false;
     regSession_ = NULL; // shall not delete it // XXX: but why?
     terminate();
+    clearCallMap();
 }
 
 void
@@ -419,7 +420,7 @@ IAXVoIPLink::sendTextMessage(const std::string& callID,
 #endif
 
 void
-IAXVoIPLink::clearCallMap(Call *call)
+IAXVoIPLink::clearCallMap()
 {
     ost::MutexLock m(iaxCallMapMutex_);
 
diff --git a/daemon/src/iax/iaxvoiplink.h b/daemon/src/iax/iaxvoiplink.h
index 9db1ff16fc..0b2b1283c6 100644
--- a/daemon/src/iax/iaxvoiplink.h
+++ b/daemon/src/iax/iaxvoiplink.h
@@ -176,7 +176,7 @@ class IAXVoIPLink : public VoIPLink {
 #if HAVE_INSTANT_MESSAGING
         virtual void sendTextMessage(const std::string& callID, const std::string& message, const std::string& from);
 #endif
-        virtual void clearCallMap(Call* call);
+        virtual void clearCallMap();
         virtual void addCall(Call* call);
         virtual Call* getCall(const std::string& id);
         virtual void removeCall(const std::string &id);
diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index 8fbe4f927d..f8fde08b83 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -516,6 +516,8 @@ SIPVoIPLink::~SIPVoIPLink()
     pj_caching_pool_destroy(cp_);
 
     pj_shutdown();
+
+    clearCallMap();
 }
 
 SIPVoIPLink* SIPVoIPLink::instance()
@@ -1044,7 +1046,7 @@ void SIPVoIPLink::sendTextMessage(const std::string &callID,
 #endif // HAVE_INSTANT_MESSAGING
 
 void
-SIPVoIPLink::clearCallMap(Call *call)
+SIPVoIPLink::clearCallMap()
 {
     ost::MutexLock m(sipCallMapMutex_);
 
diff --git a/daemon/src/sip/sipvoiplink.h b/daemon/src/sip/sipvoiplink.h
index cfbe1bb448..29f8e01313 100644
--- a/daemon/src/sip/sipvoiplink.h
+++ b/daemon/src/sip/sipvoiplink.h
@@ -256,7 +256,7 @@ class SIPVoIPLink : public VoIPLink {
                              const std::string& message,
                              const std::string& from);
 #endif
-        virtual void clearCallMap(Call* call);
+        virtual void clearCallMap();
         virtual void addCall(Call* call);
         virtual Call* getCall(const std::string& id);
         virtual void removeCall(const std::string &id);
diff --git a/daemon/src/voiplink.h b/daemon/src/voiplink.h
index 5d04834afc..a6659e2fc8 100644
--- a/daemon/src/voiplink.h
+++ b/daemon/src/voiplink.h
@@ -70,7 +70,7 @@ class VoIPLink {
         /**
          * Virtual method
          * Build and send account registration request
-         *SIP/
+         */
         virtual void sendRegister(Account *a) = 0;
 
         /**
@@ -167,7 +167,7 @@ class VoIPLink {
                                      const std::string &message,
                                      const std::string &from) = 0;
 #endif
-        virtual void clearCallMap(Call* call) = 0;
+        virtual void clearCallMap() = 0;
 
         /** Add a call to the call map (protected by mutex)
          * @param call A call pointer with a unique pointer
-- 
GitLab