diff --git a/contrib/src/dhtnet/package.json b/contrib/src/dhtnet/package.json index 7505f3aab7333e41aa0ec1ae9a49b9ba9faaaffa..1d461b1981c036deee28c46c768a71194bfdd762 100644 --- a/contrib/src/dhtnet/package.json +++ b/contrib/src/dhtnet/package.json @@ -1,6 +1,6 @@ { "name": "dhtnet", - "version": "2f3539bc19cf770cd23912c7eebe63e8d2f80515", + "version": "4796de15ed32b41949489c328bc250d17c431c80", "url": "https://review.jami.net/plugins/gitiles/dhtnet/+archive/__VERSION__.tar.gz", "deps": [ "opendht", diff --git a/contrib/src/dhtnet/rules.mak b/contrib/src/dhtnet/rules.mak index 3fe00d84876c06767dc56cd084e13fc64cb47051..bec1d14555677fa6e9b62d3082c8e3b8e4c4aee4 100644 --- a/contrib/src/dhtnet/rules.mak +++ b/contrib/src/dhtnet/rules.mak @@ -1,5 +1,5 @@ # DHTNET -DHTNET_VERSION := 2f3539bc19cf770cd23912c7eebe63e8d2f80515 +DHTNET_VERSION := 4796de15ed32b41949489c328bc250d17c431c80 DHTNET_URL := https://review.jami.net/plugins/gitiles/dhtnet/+archive/$(DHTNET_VERSION).tar.gz PKGS += dhtnet diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 2c8469118ab1700b2a725824cd19ee1f44a1e0d6..689f2eee9d77180c91df493685ee58f0ac2632da 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -4192,7 +4192,7 @@ JamiAccount::initConnectionManager() auto connectionManagerConfig = std::make_shared<dhtnet::ConnectionManager::Config>(); connectionManagerConfig->ioContext = Manager::instance().ioContext(); connectionManagerConfig->dht = dht(); - connectionManagerConfig->certStore = certStore_.get(); + connectionManagerConfig->certStore = certStore_; connectionManagerConfig->id = identity(); connectionManagerConfig->upnpCtrl = upnpCtrl_; connectionManagerConfig->turnServer = config().turnServer; @@ -4203,7 +4203,7 @@ JamiAccount::initConnectionManager() connectionManagerConfig->turnEnabled = config().turnEnabled; connectionManagerConfig->cachePath = cachePath_; connectionManagerConfig->logger = Logger::dhtLogger(); - connectionManagerConfig->factory = &Manager::instance().getIceTransportFactory(); + connectionManagerConfig->factory = Manager::instance().getIceTransportFactory(); connectionManagerConfig->turnCache = turnCache_; connectionManager_ = std::make_unique<dhtnet::ConnectionManager>(connectionManagerConfig); channelHandlers_[Uri::Scheme::SWARM] diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h index 2e55c2790284226f966821f89d88b3354665d938..34d6c42317dd9954ff35d59c9c62936409014bfd 100644 --- a/src/jamidht/jamiaccount.h +++ b/src/jamidht/jamiaccount.h @@ -707,7 +707,7 @@ private: std::string registeredName_; #endif std::shared_ptr<dht::Logger> logger_; - std::unique_ptr<dhtnet::tls::CertificateStore> certStore_; + std::shared_ptr<dhtnet::tls::CertificateStore> certStore_; std::shared_ptr<dht::DhtRunner> dht_ {}; std::shared_ptr<AccountManager> accountManager_; diff --git a/src/manager.cpp b/src/manager.cpp index 05ab417268393a2988154996cec29bb59d68f639..ba9bced7c5baf56762e4435fd3dcba85a1f7e5c9 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -434,7 +434,7 @@ struct Manager::ManagerPimpl std::atomic_bool finished_ {false}; /* ICE support */ - std::unique_ptr<dhtnet::IceTransportFactory> ice_tf_; + std::shared_ptr<dhtnet::IceTransportFactory> ice_tf_; /* Sink ID mapping */ std::map<std::string, std::weak_ptr<video::SinkClient>> sinkMap_; @@ -814,7 +814,7 @@ Manager::init(const std::filesystem::path& config_file, libjami::InitFlag flags) check_rename(fileutils::get_config_dir(PACKAGE_OLD).string(), fileutils::get_config_dir().string()); - pimpl_->ice_tf_.reset(new dhtnet::IceTransportFactory(Logger::dhtLogger())); + pimpl_->ice_tf_ = std::make_shared<dhtnet::IceTransportFactory>(Logger::dhtLogger()); pimpl_->path_ = config_file.empty() ? pimpl_->retrieveConfigPath() : config_file; JAMI_DBG("Configuration file path: %s", pimpl_->path_.c_str()); @@ -3187,10 +3187,10 @@ Manager::hasAccount(const std::string& accountID) return accountFactory.hasAccount(accountID); } -dhtnet::IceTransportFactory& +const std::shared_ptr<dhtnet::IceTransportFactory>& Manager::getIceTransportFactory() { - return *pimpl_->ice_tf_; + return pimpl_->ice_tf_; } VideoManager& diff --git a/src/manager.h b/src/manager.h index 1b660715ca460ac1e32c5499f9d668cff647c28b..9bed0fdebe1b6bed0799689442280c36a4ce5b00 100644 --- a/src/manager.h +++ b/src/manager.h @@ -789,7 +789,7 @@ public: CallFactory callFactory; - dhtnet::IceTransportFactory& getIceTransportFactory(); + const std::shared_ptr<dhtnet::IceTransportFactory>& getIceTransportFactory(); std::shared_ptr<asio::io_context> ioContext() const; std::shared_ptr<dhtnet::upnp::UPnPContext> upnpContext() const; diff --git a/src/sip/sipaccountbase.cpp b/src/sip/sipaccountbase.cpp index 0e10763372300086b8db03858311b8cd8de6f1ee..d0532d83f8a46c870818ea2d24962fb2fe36b303 100644 --- a/src/sip/sipaccountbase.cpp +++ b/src/sip/sipaccountbase.cpp @@ -249,7 +249,7 @@ SIPAccountBase::getIceOptions() const noexcept { dhtnet::IceTransportOptions opts; opts.upnpEnable = getUPnPActive(); - opts.factory = (dhtnet::IceTransportFactory*)&Manager::instance().getIceTransportFactory(); + opts.factory = Manager::instance().getIceTransportFactory(); if (config().turnEnabled && turnCache_) { auto turnAddr = turnCache_->getResolvedTurn(); diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp index 8dfc9847786c8b93e4f3fa101ab8e3b2341c3f3b..8477eb3aee9403f471e5baa6cc99c1289048f133 100644 --- a/src/sip/sipcall.cpp +++ b/src/sip/sipcall.cpp @@ -3318,9 +3318,7 @@ SIPCall::InvSessionDeleter::operator()(pjsip_inv_session* inv) const noexcept bool SIPCall::createIceMediaTransport(bool isReinvite) { - auto& iceTransportFactory = Manager::instance().getIceTransportFactory(); - - auto mediaTransport = iceTransportFactory.createTransport(getCallId()); + auto mediaTransport = Manager::instance().getIceTransportFactory()->createTransport(getCallId()); if (mediaTransport) { JAMI_DBG("[call:%s] Successfully created media ICE transport [ice:%p]", getCallId().c_str(), diff --git a/test/unitTest/ice/ice.cpp b/test/unitTest/ice/ice.cpp index da0fad96321ca46c47051a79c82d9028b1940926..07d55df2383c06466f8df36873fa619edebb2424 100644 --- a/test/unitTest/ice/ice.cpp +++ b/test/unitTest/ice/ice.cpp @@ -140,9 +140,9 @@ IceTest::testRawIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); + ice_config.factory = Manager::instance().getIceTransportFactory(); - ice_master = Manager::instance().getIceTransportFactory().createTransport("master ICE"); + ice_master = Manager::instance().getIceTransportFactory()->createTransport("master ICE"); ice_master->initIceInstance(ice_config); cv_create.notify_all(); ice_config.onInitDone = [&](bool ok) { @@ -176,9 +176,9 @@ IceTest::testRawIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); + ice_config.factory = Manager::instance().getIceTransportFactory(); - ice_slave = Manager::instance().getIceTransportFactory().createTransport("slave ICE"); + ice_slave = Manager::instance().getIceTransportFactory()->createTransport("slave ICE"); ice_slave->initIceInstance(ice_config); cv_create.notify_all(); @@ -252,8 +252,8 @@ IceTest::testTurnMasterIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_master = Manager::instance().getIceTransportFactory().createTransport("master ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_master = Manager::instance().getIceTransportFactory()->createTransport("master ICE"); ice_master->initIceInstance(ice_config); cv_create.notify_all(); ice_config.turnServers = {}; @@ -297,8 +297,8 @@ IceTest::testTurnMasterIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_slave = Manager::instance().getIceTransportFactory().createTransport("slave ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_slave = Manager::instance().getIceTransportFactory()->createTransport("slave ICE"); ice_slave->initIceInstance(ice_config); cv_create.notify_all(); @@ -367,8 +367,8 @@ IceTest::testTurnSlaveIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_master = Manager::instance().getIceTransportFactory().createTransport("master ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_master = Manager::instance().getIceTransportFactory()->createTransport("master ICE"); ice_master->initIceInstance(ice_config); cv_create.notify_all(); ice_config.onInitDone = [&](bool ok) { @@ -416,8 +416,8 @@ IceTest::testTurnSlaveIceConnection() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_slave = Manager::instance().getIceTransportFactory().createTransport("slave ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_slave = Manager::instance().getIceTransportFactory()->createTransport("slave ICE"); ice_slave->initIceInstance(ice_config); cv_create.notify_all(); CPPUNIT_ASSERT( @@ -481,9 +481,9 @@ IceTest::testReceiveTooManyCandidates() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); + ice_config.factory = Manager::instance().getIceTransportFactory(); - ice_master = Manager::instance().getIceTransportFactory().createTransport("master ICE"); + ice_master = Manager::instance().getIceTransportFactory()->createTransport("master ICE"); ice_master->initIceInstance(ice_config); cv_create.notify_all(); ice_config.onInitDone = [&](bool ok) { @@ -525,9 +525,9 @@ IceTest::testReceiveTooManyCandidates() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); + ice_config.factory = Manager::instance().getIceTransportFactory(); - ice_slave = Manager::instance().getIceTransportFactory().createTransport("slave ICE"); + ice_slave = Manager::instance().getIceTransportFactory()->createTransport("slave ICE"); ice_slave->initIceInstance(ice_config); cv_create.notify_all(); CPPUNIT_ASSERT( @@ -594,8 +594,8 @@ IceTest::testCompleteOnFailure() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_master = Manager::instance().getIceTransportFactory().createTransport("master ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_master = Manager::instance().getIceTransportFactory()->createTransport("master ICE"); ice_master->initIceInstance(ice_config); cv_create.notify_all(); ice_config.onInitDone = [&](bool ok) { @@ -643,8 +643,8 @@ IceTest::testCompleteOnFailure() ice_config.streamsCount = 1; ice_config.compCountPerStream = 1; ice_config.upnpContext = Manager::instance().upnpContext(); - ice_config.factory = &Manager::instance().getIceTransportFactory(); - ice_slave = Manager::instance().getIceTransportFactory().createTransport("slave ICE"); + ice_config.factory = Manager::instance().getIceTransportFactory(); + ice_slave = Manager::instance().getIceTransportFactory()->createTransport("slave ICE"); ice_slave->initIceInstance(ice_config); cv_create.notify_all(); // Check that nego failed and callback called