From 90766f95a36e030e36f89c05e7781cb3d6b09fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Simon=20Fauteux-Chapleau?= <francois-simon.fauteux-chapleau@savoirfairelinux.com> Date: Wed, 5 Jun 2024 11:24:55 -0400 Subject: [PATCH] conversation: fix bug related to use of shut down swarm manager The SwarmManager class uses the 'isShutdown_' variable to keep track of whether it has been shut down or not. This variable needs to be reset to false if we want to restart using a SwarmManager after it was shut down, which we sometimes do when bootstrapping a conversation. This patch fixes a failure in ConversationRequestTest::testBanContactRestartAccount that was introduced by commit eb4213d3a1c3b60ee9c3befd8e84cb7eea78daf6. GitLab: #1002 Change-Id: If5d295cbae4edd9e2292d7464e2eb2939b05eedb --- src/jamidht/conversation.cpp | 1 + src/jamidht/swarm/swarm_manager.cpp | 6 ++++++ src/jamidht/swarm/swarm_manager.h | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/jamidht/conversation.cpp b/src/jamidht/conversation.cpp index 18adc67476..9146ed0ea7 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 c680a3df72..832e1b2b04 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 93bcb84408..e35f39e174 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 */ -- GitLab