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

p2p: do not crash during TURN allocation failures

Change-Id: Icb0fca978b51b0b2520b14add3a89f3dbbcda842
parent c33f1ff7
No related branches found
No related tags found
No related merge requests found
...@@ -570,6 +570,7 @@ DhtPeerConnector::Impl::turnConnect() ...@@ -570,6 +570,7 @@ DhtPeerConnector::Impl::turnConnect()
if (turnAuthv6_ && !turnAuthv6_->isReady()) if (turnAuthv6_ && !turnAuthv6_->isReady())
turnAuthv6_.reset(); turnAuthv6_.reset();
try {
if (!turnAuthv4_ || !turnAuthv4_->isReady()) { if (!turnAuthv4_ || !turnAuthv4_->isReady()) {
turn_param_v4.authorized_family = PJ_AF_INET; turn_param_v4.authorized_family = PJ_AF_INET;
turnAuthv4_ = std::make_unique<TurnTransport>(turn_param_v4); turnAuthv4_ = std::make_unique<TurnTransport>(turn_param_v4);
...@@ -580,6 +581,11 @@ DhtPeerConnector::Impl::turnConnect() ...@@ -580,6 +581,11 @@ DhtPeerConnector::Impl::turnConnect()
turn_param_v6.authorized_family = PJ_AF_INET6; turn_param_v6.authorized_family = PJ_AF_INET6;
turnAuthv6_ = std::make_unique<TurnTransport>(turn_param_v6); turnAuthv6_ = std::make_unique<TurnTransport>(turn_param_v6);
} }
} catch (...) {
JAMI_WARN("Turn allocation failed. Do not use the TURN");
return false;
}
// Wait until TURN server READY state (or timeout) // Wait until TURN server READY state (or timeout)
Timeout<Clock> timeout {NET_CONNECTION_TIMEOUT}; Timeout<Clock> timeout {NET_CONNECTION_TIMEOUT};
......
...@@ -197,7 +197,6 @@ TurnTransportPimpl::ioJob() ...@@ -197,7 +197,6 @@ TurnTransportPimpl::ioJob()
//============================================================================== //==============================================================================
TurnTransport::TurnTransport(const TurnTransportParams& params) TurnTransport::TurnTransport(const TurnTransportParams& params)
: pimpl_ {new TurnTransportPimpl}
{ {
sip_utils::register_thread(); sip_utils::register_thread();
...@@ -208,6 +207,7 @@ TurnTransport::TurnTransport(const TurnTransportParams& params) ...@@ -208,6 +207,7 @@ TurnTransport::TurnTransport(const TurnTransportParams& params)
if (server.isUnspecified()) if (server.isUnspecified())
throw std::invalid_argument("invalid turn server address"); throw std::invalid_argument("invalid turn server address");
pimpl_ = std::unique_ptr<TurnTransportPimpl>(new TurnTransportPimpl);
pimpl_->settings = params; pimpl_->settings = params;
// PJSIP memory pool // PJSIP memory pool
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment