diff --git a/src/jamidht/conversation.cpp b/src/jamidht/conversation.cpp index 18adc6747627bd02df6c8899b35e3d83e72064e3..9146ed0ea77c61cc773d331b8b28ee883b209d86 100644 --- a/src/jamidht/conversation.cpp +++ b/src/jamidht/conversation.cpp @@ -2339,6 +2339,7 @@ Conversation::bootstrap(std::function<void()> onBootstraped, pimpl_->checkedMembers_.clear(); // If is shutdown, the conversation was re-added, causing no new nodes to be connected, but just a classic connectivity change if (pimpl_->swarmManager_->isShutdown()) { + pimpl_->swarmManager_->restart(); pimpl_->swarmManager_->maintainBuckets(); } else if (!pimpl_->swarmManager_->setKnownNodes(devices)) { fallback(this, true); diff --git a/src/jamidht/swarm/swarm_manager.cpp b/src/jamidht/swarm/swarm_manager.cpp index c680a3df7280db5e927279c889f928b447371109..832e1b2b04e381ad1d9e7c8ec9445a2537a71698 100644 --- a/src/jamidht/swarm/swarm_manager.cpp +++ b/src/jamidht/swarm/swarm_manager.cpp @@ -146,6 +146,12 @@ SwarmManager::shutdown() routing_table.shutdownAllNodes(); } +void +SwarmManager::restart() +{ + isShutdown_ = false; +} + bool SwarmManager::addKnownNode(const NodeId& nodeId) { diff --git a/src/jamidht/swarm/swarm_manager.h b/src/jamidht/swarm/swarm_manager.h index 93bcb844082328184492b2dd2a3956483658c281..e35f39e1742321742329c3a4e26d2d2dd06c760e 100644 --- a/src/jamidht/swarm/swarm_manager.h +++ b/src/jamidht/swarm/swarm_manager.h @@ -112,6 +112,14 @@ public: */ void shutdown(); + /** + * Restart the swarm manager. + * + * This function must be called in situations where we want + * to use a swarm manager that was previously shut down. + */ + void restart(); + /** * Display swarm manager info */