Browse Source

Merge pull request #1925 from wekoq/openssl

Do not save useless peer profiles
pull/1927/head
orignal 2 years ago committed by GitHub
parent
commit
f2bc2598dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      libi2pd/Profiling.cpp
  2. 3
      libi2pd/Profiling.h

17
libi2pd/Profiling.cpp

@ -150,17 +150,19 @@ namespace data
} }
else else
{ {
m_NumTunnelsAgreed++; m_NumTunnelsAgreed++;
m_LastDeclineTime = 0; m_LastDeclineTime = 0;
} }
} }
void RouterProfile::TunnelNonReplied () void RouterProfile::TunnelNonReplied ()
{ {
m_NumTunnelsNonReplied++; m_NumTunnelsNonReplied++;
UpdateTime (); UpdateTime ();
if (m_NumTunnelsNonReplied > 2*m_NumTunnelsAgreed && m_NumTunnelsNonReplied > 3) if (m_NumTunnelsNonReplied > 2*m_NumTunnelsAgreed && m_NumTunnelsNonReplied > 3)
{
m_LastDeclineTime = i2p::util::GetSecondsSinceEpoch (); m_LastDeclineTime = i2p::util::GetSecondsSinceEpoch ();
}
} }
void RouterProfile::Unreachable () void RouterProfile::Unreachable ()
@ -221,6 +223,15 @@ namespace data
m_LastUnreachableTime = 0; m_LastUnreachableTime = 0;
return (bool)m_LastUnreachableTime; return (bool)m_LastUnreachableTime;
} }
bool RouterProfile::IsUseful() const {
return
m_NumTunnelsAgreed >= PEER_PROFILE_USEFUL_THRESHOLD ||
m_NumTunnelsDeclined >= PEER_PROFILE_USEFUL_THRESHOLD ||
m_NumTunnelsNonReplied >= PEER_PROFILE_USEFUL_THRESHOLD ||
m_HasConnected;
}
std::shared_ptr<RouterProfile> GetRouterProfile (const IdentHash& identHash) std::shared_ptr<RouterProfile> GetRouterProfile (const IdentHash& identHash)
{ {
@ -275,7 +286,7 @@ namespace data
} }
auto ts = GetTime (); auto ts = GetTime ();
for (auto& it: tmp) for (auto& it: tmp)
if (it.second->IsUpdated () && (ts - it.second->GetLastUpdateTime ()).total_seconds () < PEER_PROFILE_EXPIRATION_TIMEOUT*3600) if (it.second->IsUseful() && it.second->IsUpdated () && (ts - it.second->GetLastUpdateTime ()).total_seconds () < PEER_PROFILE_EXPIRATION_TIMEOUT*3600)
it.second->Save (it.first); it.second->Save (it.first);
} }

3
libi2pd/Profiling.h

@ -36,6 +36,7 @@ namespace data
const int PEER_PROFILE_DECLINED_RECENTLY_INTERVAL = 150; // in seconds (2.5 minutes) const int PEER_PROFILE_DECLINED_RECENTLY_INTERVAL = 150; // in seconds (2.5 minutes)
const int PEER_PROFILE_PERSIST_INTERVAL = 3300; // in seconds (55 minutes) const int PEER_PROFILE_PERSIST_INTERVAL = 3300; // in seconds (55 minutes)
const int PEER_PROFILE_UNREACHABLE_INTERVAL = 2*3600; // on seconds (2 hours) const int PEER_PROFILE_UNREACHABLE_INTERVAL = 2*3600; // on seconds (2 hours)
const int PEER_PROFILE_USEFUL_THRESHOLD = 3;
class RouterProfile class RouterProfile
{ {
@ -60,6 +61,8 @@ namespace data
boost::posix_time::ptime GetLastUpdateTime () const { return m_LastUpdateTime; }; boost::posix_time::ptime GetLastUpdateTime () const { return m_LastUpdateTime; };
bool IsUpdated () const { return m_IsUpdated; }; bool IsUpdated () const { return m_IsUpdated; };
bool IsUseful() const;
private: private:
void UpdateTime (); void UpdateTime ();

Loading…
Cancel
Save