mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-11 15:19:19 +02:00
net: Make addr relay mockable
This commit is contained in:
@@ -797,8 +797,8 @@ public:
|
|||||||
std::vector<CAddress> vAddrToSend;
|
std::vector<CAddress> vAddrToSend;
|
||||||
const std::unique_ptr<CRollingBloomFilter> m_addr_known;
|
const std::unique_ptr<CRollingBloomFilter> m_addr_known;
|
||||||
bool fGetAddr{false};
|
bool fGetAddr{false};
|
||||||
int64_t nNextAddrSend GUARDED_BY(cs_sendProcessing){0};
|
std::chrono::microseconds m_next_addr_send GUARDED_BY(cs_sendProcessing){0};
|
||||||
int64_t nNextLocalAddrSend GUARDED_BY(cs_sendProcessing){0};
|
std::chrono::microseconds m_next_local_addr_send GUARDED_BY(cs_sendProcessing){0};
|
||||||
|
|
||||||
bool IsAddrRelayPeer() const { return m_addr_known != nullptr; }
|
bool IsAddrRelayPeer() const { return m_addr_known != nullptr; }
|
||||||
|
|
||||||
|
|||||||
@@ -97,10 +97,10 @@ void EraseOrphansFor(NodeId peer);
|
|||||||
/** Increase a node's misbehavior score. */
|
/** Increase a node's misbehavior score. */
|
||||||
void Misbehaving(NodeId nodeid, int howmuch, const std::string& message="") EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
void Misbehaving(NodeId nodeid, int howmuch, const std::string& message="") EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
||||||
|
|
||||||
/** Average delay between local address broadcasts in seconds. */
|
/** Average delay between local address broadcasts */
|
||||||
static constexpr unsigned int AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL = 24 * 60 * 60;
|
static constexpr std::chrono::hours AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL{24};
|
||||||
/** Average delay between peer address broadcasts in seconds. */
|
/** Average delay between peer address broadcasts */
|
||||||
static const unsigned int AVG_ADDRESS_BROADCAST_INTERVAL = 30;
|
static constexpr std::chrono::seconds AVG_ADDRESS_BROADCAST_INTERVAL{30};
|
||||||
/** Average delay between trickled inventory transmissions in seconds.
|
/** Average delay between trickled inventory transmissions in seconds.
|
||||||
* Blocks and whitelisted receivers bypass this, outbound peers get half this delay. */
|
* Blocks and whitelisted receivers bypass this, outbound peers get half this delay. */
|
||||||
static const unsigned int INVENTORY_BROADCAST_INTERVAL = 5;
|
static const unsigned int INVENTORY_BROADCAST_INTERVAL = 5;
|
||||||
@@ -3583,16 +3583,16 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
|
|||||||
int64_t nNow = GetTimeMicros();
|
int64_t nNow = GetTimeMicros();
|
||||||
auto current_time = GetTime<std::chrono::microseconds>();
|
auto current_time = GetTime<std::chrono::microseconds>();
|
||||||
|
|
||||||
if (pto->IsAddrRelayPeer() && !::ChainstateActive().IsInitialBlockDownload() && pto->nNextLocalAddrSend < nNow) {
|
if (pto->IsAddrRelayPeer() && !::ChainstateActive().IsInitialBlockDownload() && pto->m_next_local_addr_send < current_time) {
|
||||||
AdvertiseLocal(pto);
|
AdvertiseLocal(pto);
|
||||||
pto->nNextLocalAddrSend = PoissonNextSend(nNow, AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL);
|
pto->m_next_local_addr_send = PoissonNextSend(current_time, AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Message: addr
|
// Message: addr
|
||||||
//
|
//
|
||||||
if (pto->IsAddrRelayPeer() && pto->nNextAddrSend < nNow) {
|
if (pto->IsAddrRelayPeer() && pto->m_next_addr_send < current_time) {
|
||||||
pto->nNextAddrSend = PoissonNextSend(nNow, AVG_ADDRESS_BROADCAST_INTERVAL);
|
pto->m_next_addr_send = PoissonNextSend(current_time, 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);
|
assert(pto->m_addr_known);
|
||||||
|
|||||||
Reference in New Issue
Block a user