mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 14:38:29 +01:00
Replace RelayMessage with RelayTransaction.
This commit is contained in:
44
src/net.cpp
44
src/net.cpp
@@ -9,6 +9,7 @@
|
||||
#include "init.h"
|
||||
#include "addrman.h"
|
||||
#include "ui_interface.h"
|
||||
#include "script.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#include <string.h>
|
||||
@@ -1996,3 +1997,46 @@ public:
|
||||
}
|
||||
}
|
||||
instance_of_cnetcleanup;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void RelayTransaction(const CTransaction& tx, const uint256& hash)
|
||||
{
|
||||
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
|
||||
ss.reserve(10000);
|
||||
ss << tx;
|
||||
RelayTransaction(tx, hash, ss);
|
||||
}
|
||||
|
||||
void RelayTransaction(const CTransaction& tx, const uint256& hash, const CDataStream& ss)
|
||||
{
|
||||
CInv inv(MSG_TX, hash);
|
||||
{
|
||||
LOCK(cs_mapRelay);
|
||||
// Expire old relay messages
|
||||
while (!vRelayExpiration.empty() && vRelayExpiration.front().first < GetTime())
|
||||
{
|
||||
mapRelay.erase(vRelayExpiration.front().second);
|
||||
vRelayExpiration.pop_front();
|
||||
}
|
||||
|
||||
// Save original serialized message so newer versions are preserved
|
||||
mapRelay.insert(std::make_pair(inv, ss));
|
||||
vRelayExpiration.push_back(std::make_pair(GetTime() + 15 * 60, inv));
|
||||
}
|
||||
LOCK(cs_vNodes);
|
||||
BOOST_FOREACH(CNode* pnode, vNodes)
|
||||
{
|
||||
LOCK(pnode->cs_filter);
|
||||
if (pnode->pfilter)
|
||||
{
|
||||
if (pnode->pfilter->IsTransactionRelevantToFilter(tx, hash))
|
||||
pnode->PushInventory(inv);
|
||||
} else
|
||||
pnode->PushInventory(inv);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user