Skip to content

Commit

Permalink
limit last decline time by 1.5 hours. Increased declined recently int…
Browse files Browse the repository at this point in the history
…erval to 5.5 minutes
  • Loading branch information
orignal committed Nov 4, 2024
1 parent 5a4ce66 commit 2f6bdd1
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
8 changes: 5 additions & 3 deletions libi2pd/Profiling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,9 @@ namespace data
return m_NumTunnelsNonReplied > 10*(total + 1);
}

bool RouterProfile::IsDeclinedRecently ()
bool RouterProfile::IsDeclinedRecently (uint64_t ts)
{
if (!m_LastDeclineTime) return false;
auto ts = i2p::util::GetSecondsSinceEpoch ();
if (ts > m_LastDeclineTime + PEER_PROFILE_DECLINED_RECENTLY_INTERVAL ||
ts + PEER_PROFILE_DECLINED_RECENTLY_INTERVAL < m_LastDeclineTime)
m_LastDeclineTime = 0;
Expand All @@ -218,7 +217,10 @@ namespace data

bool RouterProfile::IsBad ()
{
if (IsDeclinedRecently () || IsUnreachable () || m_IsDuplicated) return true;
if (IsUnreachable () || m_IsDuplicated) return true;
auto ts = i2p::util::GetSecondsSinceEpoch ();
if (ts > PEER_PROFILE_MAX_DECLINED_INTERVAL + m_LastDeclineTime) return false;
if (IsDeclinedRecently (ts)) return true;
auto isBad = IsAlwaysDeclining () || IsLowPartcipationRate () /*|| IsLowReplyRate ()*/;
if (isBad && m_NumTimesRejected > 10*(m_NumTimesTaken + 1))
{
Expand Down
8 changes: 5 additions & 3 deletions libi2pd/Profiling.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,13 @@ namespace data
const int PEER_PROFILE_AUTOCLEAN_VARIANCE = 900; // in seconds (15 minutes)
const int PEER_PROFILE_OBSOLETE_PROFILES_CLEAN_TIMEOUT = 5400; // in seconds (1.5 hours)
const int PEER_PROFILE_OBSOLETE_PROFILES_CLEAN_VARIANCE = 2400; // in seconds (40 minutes)
const int PEER_PROFILE_DECLINED_RECENTLY_INTERVAL = 150; // in seconds (2.5 minutes)
const int PEER_PROFILE_DECLINED_RECENTLY_INTERVAL = 330; // in seconds (5.5 minutes)
const int PEER_PROFILE_MAX_DECLINED_INTERVAL = 4400; // in second (1.5 hours)
const int PEER_PROFILE_PERSIST_INTERVAL = 3300; // in seconds (55 minutes)
const int PEER_PROFILE_UNREACHABLE_INTERVAL = 480; // in seconds (8 minutes)
const int PEER_PROFILE_USEFUL_THRESHOLD = 3;

const int PEER_PROFILE_ALWAYS_DECLINING_NUM = 5; // num declines in row to consider always declined

class RouterProfile
{
public:
Expand Down Expand Up @@ -81,7 +83,7 @@ namespace data
bool IsAlwaysDeclining () const { return !m_NumTunnelsAgreed && m_NumTunnelsDeclined >= 5; };
bool IsLowPartcipationRate () const;
bool IsLowReplyRate () const;
bool IsDeclinedRecently ();
bool IsDeclinedRecently (uint64_t ts);

private:

Expand Down

0 comments on commit 2f6bdd1

Please sign in to comment.