diff --git a/src/Dispatcher.cpp b/src/Dispatcher.cpp index 060f2d17f6..d5049c82bb 100644 --- a/src/Dispatcher.cpp +++ b/src/Dispatcher.cpp @@ -306,7 +306,16 @@ void DispatcherBase::ServerThreadMain() { std::weak_ptr(conn))); { std::lock_guard lock(m_user_mutex); - m_connections.emplace_back(conn); + // reuse dead connection slots + bool placed = false; + for (auto& c : m_connections) { + if (c->state() == NetworkConnection::kDead) { + c = conn; + placed = true; + break; + } + } + if (!placed) m_connections.emplace_back(conn); conn->Start(); } }