Changeset View
Changeset View
Standalone View
Standalone View
src/net_processing.cpp
Show First 20 Lines • Show All 4,350 Lines • ▼ Show 20 Lines | bool PeerLogicValidation::SendMessages(const Config &config, CNode *pto, | ||||
// | // | ||||
// Message: addr | // Message: addr | ||||
// | // | ||||
if (pto->IsAddrRelayPeer() && pto->nNextAddrSend < nNow) { | if (pto->IsAddrRelayPeer() && pto->nNextAddrSend < nNow) { | ||||
pto->nNextAddrSend = | pto->nNextAddrSend = | ||||
PoissonNextSend(nNow, AVG_ADDRESS_BROADCAST_INTERVAL); | PoissonNextSend(nNow, AVG_ADDRESS_BROADCAST_INTERVAL); | ||||
std::vector<CAddress> vAddr; | std::vector<CAddress> vAddr; | ||||
vAddr.reserve(pto->vAddrToSend.size()); | vAddr.reserve(pto->vAddrToSend.size()); | ||||
assert(pto->m_addr_known); | |||||
for (const CAddress &addr : pto->vAddrToSend) { | for (const CAddress &addr : pto->vAddrToSend) { | ||||
if (!pto->m_addr_known->contains(addr.GetKey())) { | if (!pto->m_addr_known->contains(addr.GetKey())) { | ||||
pto->m_addr_known->insert(addr.GetKey()); | pto->m_addr_known->insert(addr.GetKey()); | ||||
vAddr.push_back(addr); | vAddr.push_back(addr); | ||||
// receiver rejects addr messages larger than 1000 | // receiver rejects addr messages larger than 1000 | ||||
if (vAddr.size() >= 1000) { | if (vAddr.size() >= 1000) { | ||||
connman->PushMessage( | connman->PushMessage( | ||||
pto, msgMaker.Make(NetMsgType::ADDR, vAddr)); | pto, msgMaker.Make(NetMsgType::ADDR, vAddr)); | ||||
▲ Show 20 Lines • Show All 633 Lines • Show Last 20 Lines |