diff --git a/src/ringdht/p2p.cpp b/src/ringdht/p2p.cpp index 496bc9f6402b650408630905d0e70bd1e79b14b6..6557c06d6919eb3dcdcde3c98bb1459954e6a2da 100644 --- a/src/ringdht/p2p.cpp +++ b/src/ringdht/p2p.cpp @@ -201,7 +201,7 @@ public: Channel<std::unique_ptr<CtrlMsgBase>> ctrl; private: - std::unique_ptr<ConnectedTurnTransport> turn_ep_; + std::list<std::unique_ptr<ConnectedTurnTransport>> turn_ep_; std::unique_ptr<TurnTransport> turn_; // key: Stored certificate PublicKey id (normaly it's the DeviceId) @@ -441,7 +441,8 @@ DhtPeerConnector::Impl::onTurnPeerConnection(const IpAddr& peer_addr) servers_.emplace(peer_addr, std::move(connection)); // note: operating this way let endpoint to be deleted safely in case of exceptions - turn_ep_ = std::move(turn_ep); + std::remove(turn_ep_.begin(), turn_ep_.end(), nullptr); + turn_ep_.emplace_back(std::move(turn_ep)); } void