Skip to content
Snippets Groups Projects
Commit 51149184 authored by Sébastien Blin's avatar Sébastien Blin Committed by Adrien Béraud
Browse files

sipcall: move ice deletion to avoid deadlock

Change-Id: I1ea5192fd33c3fb4ad9270974aa9ab55cc7c54d0
GitLab: #384
parent 95fb0733
No related branches found
No related tags found
No related merge requests found
......@@ -1635,7 +1635,6 @@ SIPCall::initIceMediaTransport(bool master,
JAMI_ERR("No account detected");
return false;
}
std::lock_guard<std::mutex> lk(transportMtx_);
JAMI_DBG("[call:%s] create media ICE transport", getCallId().c_str());
auto iceOptions = options == std::nullopt ? acc->getIceOptions() : *options;
......@@ -1677,10 +1676,16 @@ SIPCall::initIceMediaTransport(bool master,
};
auto& iceTransportFactory = Manager::instance().getIceTransportFactory();
tmpMediaTransport_ = iceTransportFactory.createUTransport(getCallId().c_str(),
auto transport = iceTransportFactory.createUTransport(getCallId().c_str(),
channel_num,
master,
iceOptions);
std::lock_guard<std::mutex> lk(transportMtx_);
// Destroy old ice on a separate io pool
if (tmpMediaTransport_)
dht::ThreadPool::io().run([ice = std::make_shared<decltype(tmpMediaTransport_)>(
std::move(tmpMediaTransport_))] {});
tmpMediaTransport_ = std::move(transport);
return static_cast<bool>(tmpMediaTransport_);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment