connectionmanager: pass turn_cache to config
This allow upper layers to manage the configuration of the cache.
Change-Id: I2c79fb1946f22b23a0de955728811618ab84272c
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 @@
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 @@
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 @@
// .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;
}