|
|
|
@ -1365,7 +1365,7 @@ void RelayTransaction(const uint256& txid, const CConnman& connman)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void RelayAddress(const CAddress& addr, bool fReachable, CConnman* connman)
|
|
|
|
|
static void RelayAddress(const CAddress& addr, bool fReachable, const CConnman& connman)
|
|
|
|
|
{
|
|
|
|
|
unsigned int nRelayNodes = fReachable ? 2 : 1; // limited relaying of addresses outside our network(s)
|
|
|
|
|
|
|
|
|
@ -1373,7 +1373,7 @@ static void RelayAddress(const CAddress& addr, bool fReachable, CConnman* connma
|
|
|
|
|
// Use deterministic randomness to send to the same nodes for 24 hours
|
|
|
|
|
// at a time so the m_addr_knowns of the chosen nodes prevent repeats
|
|
|
|
|
uint64_t hashAddr = addr.GetHash();
|
|
|
|
|
const CSipHasher hasher = connman->GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr << 32).Write((GetTime() + hashAddr) / (24*60*60));
|
|
|
|
|
const CSipHasher hasher = connman.GetDeterministicRandomizer(RANDOMIZER_ID_ADDRESS_RELAY).Write(hashAddr << 32).Write((GetTime() + hashAddr) / (24 * 60 * 60));
|
|
|
|
|
FastRandomContext insecure_rand;
|
|
|
|
|
|
|
|
|
|
std::array<std::pair<uint64_t, CNode*>,2> best{{{0, nullptr}, {0, nullptr}}};
|
|
|
|
@ -1398,7 +1398,7 @@ static void RelayAddress(const CAddress& addr, bool fReachable, CConnman* connma
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
connman->ForEachNodeThen(std::move(sortfunc), std::move(pushfunc));
|
|
|
|
|
connman.ForEachNodeThen(std::move(sortfunc), std::move(pushfunc));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void static ProcessGetBlockData(CNode* pfrom, const CChainParams& chainparams, const CInv& inv, CConnman* connman)
|
|
|
|
@ -2192,7 +2192,7 @@ bool ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStream& vR
|
|
|
|
|
if (addr.nTime > nSince && !pfrom->fGetAddr && vAddr.size() <= 10 && addr.IsRoutable())
|
|
|
|
|
{
|
|
|
|
|
// Relay to a limited number of other nodes
|
|
|
|
|
RelayAddress(addr, fReachable, connman);
|
|
|
|
|
RelayAddress(addr, fReachable, *connman);
|
|
|
|
|
}
|
|
|
|
|
// Do not store addresses outside our network
|
|
|
|
|
if (fReachable)
|
|
|
|
|