diff --git a/src/manager.cpp b/src/manager.cpp
index 3dbf5a87d5a9275010a4b4508822ce0911fc9fc2..1fd25053615f0a371ae46265a150d63ddc0fdedd 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -1905,7 +1905,7 @@ Manager::incomingCall(Call& call, const std::string& accountId)
 
     auto currentCall = getCurrentCall();
     if (account->isRendezVous()) {
-        runOnMainThread([this, callID] {
+        dht::ThreadPool::io().run([this, callID] {
             answerCall(callID);
             auto call = getCallFromCallID(callID);
             auto accountId = call->getAccountId();
@@ -1936,7 +1936,7 @@ Manager::incomingCall(Call& call, const std::string& accountId)
             emitSignal<DRing::CallSignal::ConferenceCreated>(conf->getConfID());
         });
     } else if (pimpl_->autoAnswer_) {
-        runOnMainThread([this, callID] { answerCall(callID); });
+        dht::ThreadPool::io().run([this, callID] { answerCall(callID); });
     } else if (currentCall) {
         // Test if already calling this person
         if (currentCall->getAccountId() == accountId