diff --git a/src/jamidht/conversation_module.cpp b/src/jamidht/conversation_module.cpp index b349fc6e514b1d162fd17e8bf71df6c3ed4a29c7..9717578ed2c077a560c15cc20d180b6ed2a70301 100644 --- a/src/jamidht/conversation_module.cpp +++ b/src/jamidht/conversation_module.cpp @@ -1264,10 +1264,9 @@ ConversationModule::loadConversations() } void -ConversationModule::bootstrap() +ConversationModule::bootstrap(const std::string& convId) { - std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_); - for (auto& [_, conv] : pimpl_->conversations_) { + auto bootstrap = [&](auto& conv) { if (conv) { #ifdef LIBJAMI_TESTABLE conv->onBootstrapStatus(pimpl_->bootstrapCbTest_); @@ -1275,6 +1274,17 @@ ConversationModule::bootstrap() conv->bootstrap( std::bind(&ConversationModule::Impl::bootstrapCb, pimpl_.get(), conv->id())); } + }; + std::unique_lock<std::mutex> lk(pimpl_->conversationsMtx_); + if (convId.empty()) { + for (auto& [_, conv] : pimpl_->conversations_) { + bootstrap(conv); + } + } else { + auto it = pimpl_->conversations_.find(convId); + if (it != pimpl_->conversations_.end()) { + bootstrap(it->second); + } } } void diff --git a/src/jamidht/conversation_module.h b/src/jamidht/conversation_module.h index 59d28770c0a9619812c0e42d6ffb436fc5661949..dddedb6ac7f5cc459ec4534b0c22375877edeeab 100644 --- a/src/jamidht/conversation_module.h +++ b/src/jamidht/conversation_module.h @@ -80,7 +80,7 @@ public: /** * Bootstrap swarm managers to other peers */ - void bootstrap(); + void bootstrap(const std::string& convId = ""); /** * Clear not removed fetch