From eb4213d3a1c3b60ee9c3befd8e84cb7eea78daf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Mon, 27 May 2024 09:54:36 -0400 Subject: [PATCH] swarm_manager: avoid deadlock in shutdown shutdown can cause the needSocketCb_ to pass a null socket. In this case we can directly return instead of locking GitLab: #995 Change-Id: I8ad744e494ea0bd3fe15f221a09feeb44e9aec83 --- src/jamidht/swarm/swarm_manager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jamidht/swarm/swarm_manager.cpp b/src/jamidht/swarm/swarm_manager.cpp index 2a6bc0d89b..c680a3df72 100644 --- a/src/jamidht/swarm/swarm_manager.cpp +++ b/src/jamidht/swarm/swarm_manager.cpp @@ -339,7 +339,7 @@ SwarmManager::tryConnect(const NodeId& nodeId) needSocketCb_(nodeId.toString(), [w = weak(), nodeId](const std::shared_ptr<dhtnet::ChannelSocketInterface>& socket) { auto shared = w.lock(); - if (!shared) + if (!shared || shared->isShutdown_) return true; if (socket) { shared->addChannel(socket); -- GitLab