Browse Source

reset floodfill cap for unknown floodfills

pull/1927/head
orignal 1 year ago
parent
commit
c757b6d020
  1. 15
      libi2pd/NetDb.cpp
  2. 1
      libi2pd/RouterInfo.h

15
libi2pd/NetDb.cpp

@ -267,7 +267,12 @@ namespace data
if (wasFloodfill) if (wasFloodfill)
m_Floodfills.Remove (r->GetIdentHash ()); m_Floodfills.Remove (r->GetIdentHash ());
else if (r->IsEligibleFloodfill ()) else if (r->IsEligibleFloodfill ())
{
if (m_Floodfills.GetSize () < NETDB_NUM_FLOODFILLS_THRESHOLD || r->GetProfile ()->IsReal ())
m_Floodfills.Insert (r); m_Floodfills.Insert (r);
else
r->ResetFlooldFill ();
}
} }
} }
else else
@ -290,13 +295,17 @@ namespace data
if (inserted) if (inserted)
{ {
LogPrint (eLogInfo, "NetDb: RouterInfo added: ", ident.ToBase64()); LogPrint (eLogInfo, "NetDb: RouterInfo added: ", ident.ToBase64());
if (r->IsFloodfill () && r->IsEligibleFloodfill () && if (r->IsFloodfill () && r->IsEligibleFloodfill ())
(m_Floodfills.GetSize () < NETDB_NUM_FLOODFILLS_THRESHOLD || {
r->GetProfile ()->IsReal ())) // don't insert floodfill until it's known real if we have enough if (m_Floodfills.GetSize () < NETDB_NUM_FLOODFILLS_THRESHOLD ||
r->GetProfile ()->IsReal ()) // don't insert floodfill until it's known real if we have enough
{ {
std::unique_lock<std::mutex> l(m_FloodfillsMutex); std::unique_lock<std::mutex> l(m_FloodfillsMutex);
m_Floodfills.Insert (r); m_Floodfills.Insert (r);
} }
else
r->ResetFlooldFill ();
}
} }
else else
{ {

1
libi2pd/RouterInfo.h

@ -224,6 +224,7 @@ namespace data
void UpdateSupportedTransports (); void UpdateSupportedTransports ();
void UpdateIntroducers (uint64_t ts); // ts in seconds void UpdateIntroducers (uint64_t ts); // ts in seconds
bool IsFloodfill () const { return m_Caps & Caps::eFloodfill; }; bool IsFloodfill () const { return m_Caps & Caps::eFloodfill; };
void ResetFlooldFill () { m_Caps &= ~Caps::eFloodfill; };
bool IsECIES () const { return m_RouterIdentity->GetCryptoKeyType () == i2p::data::CRYPTO_KEY_TYPE_ECIES_X25519_AEAD; }; bool IsECIES () const { return m_RouterIdentity->GetCryptoKeyType () == i2p::data::CRYPTO_KEY_TYPE_ECIES_X25519_AEAD; };
bool IsNTCP2 (bool v4only = true) const; bool IsNTCP2 (bool v4only = true) const;
bool IsNTCP2V6 () const { return m_SupportedTransports & eNTCP2V6; }; bool IsNTCP2V6 () const { return m_SupportedTransports & eNTCP2V6; };

Loading…
Cancel
Save