From 7927f1a60188c20a98a276d031029c4cb69ff959 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Thu, 14 Nov 2019 23:53:15 -0500
Subject: [PATCH] sipvoiplink: use thread pool for name resolution

Change-Id: I0f41dd8fdfc008b2967854fe2e0e097f67888095
---
 src/sip/sipvoiplink.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp
index 78da8ce6cc..aa055ba82a 100644
--- a/src/sip/sipvoiplink.cpp
+++ b/src/sip/sipvoiplink.cpp
@@ -53,6 +53,8 @@
 #include "string_utils.h"
 #include "logger.h"
 
+#include <opendht/thread_pool.h>
+
 #include <pjsip/sip_endpoint.h>
 #include <pjsip/sip_uri.h>
 
@@ -1199,10 +1201,10 @@ SIPVoIPLink::resolveSrvName(const std::string &name, pjsip_transport_type_e type
             try {
                 if (s != PJ_SUCCESS || !r) {
                     JAMI_WARN("Can't resolve \"%s\" using pjsip_endpt_resolve, trying getaddrinfo.", name.c_str());
-                    std::thread([=,cb=std::move(cb)](){
+                    dht::ThreadPool::io().run([=,cb=std::move(cb)](){
                         auto ips = ip_utils::getAddrList(name.c_str());
-                        runOnMainThread(std::bind(cb, ips.empty() ? std::vector<IpAddr>{} : std::move(ips)));
-                    }).detach();
+                        runOnMainThread(std::bind(cb, std::move(ips)));
+                    });
                 } else {
                     std::vector<IpAddr> ips;
                     ips.reserve(r->count);
-- 
GitLab