Implement "feefilter" P2P message.

This commit is contained in:
Alex Morcos
2016-02-12 15:57:15 -05:00
committed by lateminer
parent 41ffefbe33
commit b821da64ef
16 changed files with 158 additions and 39 deletions

View File

@@ -2044,20 +2044,15 @@ public:
instance_of_cnetcleanup;
void RelayTransaction(const CTransaction& tx)
void RelayTransaction(const CTransaction& tx, CFeeRate feerate)
{
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
ss.reserve(10000);
ss << tx;
RelayTransaction(tx, ss);
RelayTransaction(tx, feerate, ss);
}
void RelayTransaction(const CTransaction& tx, const CDataStream& ss)
void RelayTransaction(const CTransaction& tx, CFeeRate feerate, const CDataStream& ss)
{
CInv inv(MSG_TX, tx.GetHash());
{
@@ -2078,6 +2073,11 @@ void RelayTransaction(const CTransaction& tx, const CDataStream& ss)
{
if(!pnode->fRelayTxes)
continue;
{
LOCK(pnode->cs_feeFilter);
if (feerate.GetFeePerK() < pnode->minFeeFilter)
continue;
}
LOCK(pnode->cs_filter);
if (pnode->pfilter)
{
@@ -2381,6 +2381,9 @@ CNode::CNode(SOCKET hSocketIn, const CAddress& addrIn, const std::string& addrNa
nPingUsecTime = 0;
fPingQueued = false;
nMinPingUsecTime = std::numeric_limits<int64_t>::max();
minFeeFilter = 0;
lastSentFeeFilter = 0;
nextSendTimeFeeFilter = 0;
{
LOCK(cs_nLastNodeId);