From b0e6d01ef32388a92976cad09962471dd1f68248 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Sun, 2 Dec 2018 20:52:40 -0500 Subject: [PATCH] limit link sessions to max of 16 --- llarp/link/server.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/llarp/link/server.cpp b/llarp/link/server.cpp index 72e567da1..1834dc1b7 100644 --- a/llarp/link/server.cpp +++ b/llarp/link/server.cpp @@ -86,6 +86,7 @@ namespace llarp void ILinkLayer::MapAddr(const PubKey& pk, ILinkSession* s) { + static constexpr size_t MaxSessionsPerKey = 16; Lock l_authed(m_AuthedLinksMutex); Lock l_pending(m_PendingMutex); auto itr = m_Pending.begin(); @@ -93,7 +94,10 @@ namespace llarp { if(itr->get() == s) { - m_AuthedLinks.insert(std::make_pair(pk, std::move(*itr))); + if(m_AuthedLinks.count(pk) < MaxSessionsPerKey) + m_AuthedLinks.insert(std::make_pair(pk, std::move(*itr))); + else + s->Close(); itr = m_Pending.erase(itr); return; }