diff --git a/sflphone-common/src/iax/iaxvoiplink.cpp b/sflphone-common/src/iax/iaxvoiplink.cpp
index 2e1201bfffffbb02f2f370ac69f2b6ebc92e3da2..3faabe566a7fff8cc51445408da73ad4ebe51053 100644
--- a/sflphone-common/src/iax/iaxvoiplink.cpp
+++ b/sflphone-common/src/iax/iaxvoiplink.cpp
@@ -539,6 +539,8 @@ IAXVoIPLink::peerHungup (const CallID& id)
     std::string reason = "Dumped Call";
     CHK_VALID_CALL;
 
+    audiolayer->getMainBuffer()->unBindAll(call->getCallId());
+
     _mutexIAX.enterMutex();
 
     _mutexIAX.leaveMutex();
@@ -564,6 +566,8 @@ IAXVoIPLink::onhold (const CallID& id)
 
     CHK_VALID_CALL;
 
+    audiolayer->getMainBuffer()->unBindAll(call->getCallId());
+
     //if (call->getState() == Call::Hold) { _debug("Call is already on hold\n"); return false; }
 
     _mutexIAX.enterMutex();
@@ -581,6 +585,8 @@ IAXVoIPLink::offhold (const CallID& id)
 
     CHK_VALID_CALL;
 
+    Manager::instance().addStream(call->getCallId());
+
     //if (call->getState() == Call::Active) { _debug("Call is already active\n"); return false; }
     _mutexIAX.enterMutex();
     iax_unquelch (call->getSession());