diff --git a/daemon/src/iax/iaxvoiplink.cpp b/daemon/src/iax/iaxvoiplink.cpp
index 647608ceef4456c49d1c8e24995353ac1daaec7f..66221b798578317e2e60723fc2e8e344d7fd8fe5 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 9db1ff16fc3cc1b9232a7ee60f549348409d1cfd..0b2b1283c61ab208b5d9755779af32578d5f0c4a 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 8fbe4f927db5288b58462eaf1a27e474ee45dade..f8fde08b8366038188f5f64e7beac01e647d6b09 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 cfbe1bb448d476afc18dc645aae3c611e365026e..29f8e0131337146079411e90870fb7b5c8444e02 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 5d04834afcf395c8b68912bc324c31d5c60d2bdd..a6659e2fc8c3b734ffbeb1c85be71494a30610a6 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