diff --git a/src/jamidht/swarm/swarm_manager.cpp b/src/jamidht/swarm/swarm_manager.cpp
index 2a6bc0d89bdfd69f33bb688f49037efe896f210d..c680a3df7280db5e927279c889f928b447371109 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);