From 704a614c52c2e5e93a14dc4db4f50a47932cf7be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Tue, 17 Apr 2018 12:28:55 -0400 Subject: [PATCH] p2p: do not close current connection if already ready 6f15399ef628922a3a34d2d5d9bc0dd2df551987 broke the multi-transfer with the same contact because it closes previous transfers. We need to keep correct turn connections. Change-Id: I0cb9942417b10cc1aaa7d6879613c685dc5de2ad Reviewed-by: Philippe Gorley <philippe.gorley@savoirfairelinux.com> --- src/ringdht/p2p.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ringdht/p2p.cpp b/src/ringdht/p2p.cpp index 9d09b05145..2180a3214d 100644 --- a/src/ringdht/p2p.cpp +++ b/src/ringdht/p2p.cpp @@ -425,11 +425,16 @@ DhtPeerConnector::Impl::turnConnect() if (turnAuthv6_ && !turnAuthv6_->isReady()) turnAuthv6_.release(); - turn_param_v4.authorized_family = PJ_AF_INET; - turnAuthv4_ = std::make_unique<TurnTransport>(turn_param_v4); - auto turn_param_v6 = turn_param_v4; - turn_param_v6.authorized_family = PJ_AF_INET6; - turnAuthv6_ = std::make_unique<TurnTransport>(turn_param_v6); + if (!turnAuthv4_ || !turnAuthv4_->isReady()) { + turn_param_v4.authorized_family = PJ_AF_INET; + turnAuthv4_ = std::make_unique<TurnTransport>(turn_param_v4); + } + + if (!turnAuthv6_ || !turnAuthv6_->isReady()) { + auto turn_param_v6 = turn_param_v4; + turn_param_v6.authorized_family = PJ_AF_INET6; + turnAuthv6_ = std::make_unique<TurnTransport>(turn_param_v6); + } // Wait until TURN server READY state (or timeout) Timeout<Clock> timeout {NET_CONNECTION_TIMEOUT}; -- GitLab