From 648a884a184531c97b03f257f3dabbeb7422d4a9 Mon Sep 17 00:00:00 2001 From: orignal Date: Sat, 27 Apr 2024 08:38:43 -0400 Subject: [PATCH] use copy of excluded peers --- libi2pd/NetDbRequests.cpp | 14 +++++++++++++- libi2pd/NetDbRequests.h | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libi2pd/NetDbRequests.cpp b/libi2pd/NetDbRequests.cpp index edde596e..a86692b7 100644 --- a/libi2pd/NetDbRequests.cpp +++ b/libi2pd/NetDbRequests.cpp @@ -67,6 +67,18 @@ namespace data m_ExcludedPeers.clear (); } + std::set RequestedDestination::GetExcludedPeers () const + { + std::lock_guard l (m_ExcludedPeersMutex); + return m_ExcludedPeers; + } + + size_t RequestedDestination::GetNumExcludedPeers () const + { + std::lock_guard l (m_ExcludedPeersMutex); + return m_ExcludedPeers.size (); + } + void RequestedDestination::Success (std::shared_ptr r) { m_IsActive = false; @@ -188,7 +200,7 @@ namespace data { if (!dest) return false; bool ret = true; - auto count = dest->GetExcludedPeers ().size (); + auto count = dest->GetNumExcludedPeers (); if (!dest->IsExploratory () && count < MAX_NUM_REQUEST_ATTEMPTS) { auto nextFloodfill = netdb.GetClosestFloodfill (dest->GetDestination (), dest->GetExcludedPeers ()); diff --git a/libi2pd/NetDbRequests.h b/libi2pd/NetDbRequests.h index 934386ca..8c805540 100644 --- a/libi2pd/NetDbRequests.h +++ b/libi2pd/NetDbRequests.h @@ -35,8 +35,8 @@ namespace data ~RequestedDestination (); const IdentHash& GetDestination () const { return m_Destination; }; - int GetNumExcludedPeers () const { return m_ExcludedPeers.size (); }; - const std::set& GetExcludedPeers () const { return m_ExcludedPeers; }; + size_t GetNumExcludedPeers () const; + std::set GetExcludedPeers () const; void ClearExcludedPeers (); bool IsExploratory () const { return m_IsExploratory; }; bool IsDirect () const { return m_IsDirect; };