From 6942c20879353819d0e90c96879d15d015517739 Mon Sep 17 00:00:00 2001 From: orignal Date: Sun, 1 Jan 2023 19:42:40 -0500 Subject: [PATCH] don't select overloaded peer --- libi2pd/Transports.cpp | 6 ++++-- libi2pd/Transports.h | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/libi2pd/Transports.cpp b/libi2pd/Transports.cpp index 56fa4f39..00076f53 100644 --- a/libi2pd/Transports.cpp +++ b/libi2pd/Transports.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2022, The PurpleI2P Project +* Copyright (c) 2013-2023, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * @@ -823,7 +823,9 @@ namespace transport std::unique_lock l(m_PeersMutex); auto it = m_Peers.begin (); std::advance (it, rand () % m_Peers.size ()); - if (it == m_Peers.end () || it->second.router) return nullptr; // not connected + if (it == m_Peers.end () || it->second.router || it->second.sessions.empty () || + it->second.sessions.front ()->GetSendQueueSize () > PEER_ROUTER_INFO_OVERLOAD_QUEUE_SIZE) + return nullptr; // not connected or overloaded ident = it->first; } return i2p::data::netdb.FindRouter (ident); diff --git a/libi2pd/Transports.h b/libi2pd/Transports.h index 4723b752..bbe98bf3 100644 --- a/libi2pd/Transports.h +++ b/libi2pd/Transports.h @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2022, The PurpleI2P Project +* Copyright (c) 2013-2023, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * @@ -63,6 +63,7 @@ namespace transport const int PEER_ROUTER_INFO_UPDATE_INTERVAL = 31*60; // in seconds const int PEER_ROUTER_INFO_UPDATE_INTERVAL_VARIANCE = 7*60; // in seconds + const size_t PEER_ROUTER_INFO_OVERLOAD_QUEUE_SIZE = 25; struct Peer { int numAttempts;