mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-02-02 02:54:01 +01:00
don't request relay tag for every session if we have enough introducers
This commit is contained in:
parent
4178ac8eac
commit
0b97b4294c
|
@ -72,6 +72,7 @@ namespace transport
|
||||||
bool IsSupported (const boost::asio::ip::address& addr) const;
|
bool IsSupported (const boost::asio::ip::address& addr) const;
|
||||||
uint16_t GetPort (bool v4) const;
|
uint16_t GetPort (bool v4) const;
|
||||||
std::mt19937& GetRng () { return m_Rng; }
|
std::mt19937& GetRng () { return m_Rng; }
|
||||||
|
bool IsMaxNumIntroducers (bool v4) const { return (v4 ? m_Introducers.size () : m_IntroducersV6.size ()) >= SSU2_MAX_NUM_INTRODUCERS; }
|
||||||
bool IsSyncClockFromPeers () const { return m_IsSyncClockFromPeers; };
|
bool IsSyncClockFromPeers () const { return m_IsSyncClockFromPeers; };
|
||||||
void AdjustTimeOffset (int64_t offset, std::shared_ptr<const i2p::data::IdentityEx> from);
|
void AdjustTimeOffset (int64_t offset, std::shared_ptr<const i2p::data::IdentityEx> from);
|
||||||
|
|
||||||
|
|
|
@ -680,10 +680,14 @@ namespace transport
|
||||||
size_t payloadSize = 7;
|
size_t payloadSize = 7;
|
||||||
if (GetRouterStatus () == eRouterStatusFirewalled && m_Address->IsIntroducer ())
|
if (GetRouterStatus () == eRouterStatusFirewalled && m_Address->IsIntroducer ())
|
||||||
{
|
{
|
||||||
// relay tag request
|
if (!m_Server.IsMaxNumIntroducers (m_RemoteEndpoint.address ().is_v4 ()) ||
|
||||||
payload[payloadSize] = eSSU2BlkRelayTagRequest;
|
m_Server.GetRng ()() & 0x01) // request tag with probability 1/2 if we have enough introducers
|
||||||
memset (payload + payloadSize + 1, 0, 2); // size = 0
|
{
|
||||||
payloadSize += 3;
|
// relay tag request
|
||||||
|
payload[payloadSize] = eSSU2BlkRelayTagRequest;
|
||||||
|
memset (payload + payloadSize + 1, 0, 2); // size = 0
|
||||||
|
payloadSize += 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
payloadSize += CreatePaddingBlock (payload + payloadSize, 40 - payloadSize, 1);
|
payloadSize += CreatePaddingBlock (payload + payloadSize, 40 - payloadSize, 1);
|
||||||
// KDF for session request
|
// KDF for session request
|
||||||
|
|
Loading…
Reference in a new issue