From 84bf41843600801cd76c045bfba29fa79384f06d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Fri, 21 Jul 2023 14:18:39 -0400 Subject: [PATCH] connectionmanager: pass turn_cache to config This allow upper layers to manage the configuration of the cache. Change-Id: I2c79fb1946f22b23a0de955728811618ab84272c --- include/connectionmanager.h | 5 ++--- src/connectionmanager.cpp | 30 ++++++++++++++---------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/include/connectionmanager.h b/include/connectionmanager.h index 2e8fb9e..e6ad37b 100644 --- a/include/connectionmanager.h +++ b/include/connectionmanager.h @@ -18,6 +18,7 @@ #include "ice_options.h" #include "multiplexed_socket.h" +#include "turn_cache.h" #include <opendht/dhtrunner.h> #include <opendht/infohash.h> @@ -237,9 +238,7 @@ struct ConnectionManager::Config std::string turnServerPwd; std::string turnServerRealm; - mutable std::mutex cachedTurnMutex {}; - dht::SockAddr cacheTurnV4 {}; - dht::SockAddr cacheTurnV6 {}; + std::shared_ptr<TurnCache> turnCache; std::string cachePath {}; diff --git a/src/connectionmanager.cpp b/src/connectionmanager.cpp index 7fa8aac..127b55b 100644 --- a/src/connectionmanager.cpp +++ b/src/connectionmanager.cpp @@ -1408,15 +1408,21 @@ ConnectionManager::Impl::getIceOptions() const noexcept if (config_->stunEnabled) opts.stunServers.emplace_back(StunServerInfo().setUri(config_->stunServer)); if (config_->turnEnabled) { - auto cached = false; - std::lock_guard<std::mutex> lk(config_->cachedTurnMutex); - cached = config_->cacheTurnV4 || config_->cacheTurnV6; - if (config_->cacheTurnV4) { + if (config_->turnCache) { + auto turnAddr = config_->turnCache->getResolvedTurn(); + if (turnAddr != std::nullopt) { + opts.turnServers.emplace_back(TurnServerInfo() + .setUri(turnAddr->toString()) + .setUsername(config_->turnServerUserName) + .setPassword(config_->turnServerPwd) + .setRealm(config_->turnServerRealm)); + } + } else { opts.turnServers.emplace_back(TurnServerInfo() - .setUri(config_->cacheTurnV4.toString()) - .setUsername(config_->turnServerUserName) - .setPassword(config_->turnServerPwd) - .setRealm(config_->turnServerRealm)); + .setUri(config_->turnServer) + .setUsername(config_->turnServerUserName) + .setPassword(config_->turnServerPwd) + .setRealm(config_->turnServerRealm)); } // NOTE: first test with ipv6 turn was not concluant and resulted in multiple // co issues. So this needs some debug. for now just disable @@ -1427,14 +1433,6 @@ ConnectionManager::Impl::getIceOptions() const noexcept // .setPassword(turnServerPwd_) // .setRealm(turnServerRealm_)); //} - // Nothing cached, so do the resolution - if (!cached) { - opts.turnServers.emplace_back(TurnServerInfo() - .setUri(config_->turnServer) - .setUsername(config_->turnServerUserName) - .setPassword(config_->turnServerPwd) - .setRealm(config_->turnServerRealm)); - } } return opts; } -- GitLab