mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 20:42:59 +01:00
Change mapRelay to store CTransactions
This commit is contained in:
parent
97d0b9889f
commit
38c310299c
@ -4456,7 +4456,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
|
|||||||
bool pushed = false;
|
bool pushed = false;
|
||||||
{
|
{
|
||||||
LOCK(cs_mapRelay);
|
LOCK(cs_mapRelay);
|
||||||
map<CInv, CDataStream>::iterator mi = mapRelay.find(inv);
|
map<uint256, CTransaction>::iterator mi = mapRelay.find(inv.hash);
|
||||||
if (mi != mapRelay.end()) {
|
if (mi != mapRelay.end()) {
|
||||||
pfrom->PushMessage(inv.GetCommand(), (*mi).second);
|
pfrom->PushMessage(inv.GetCommand(), (*mi).second);
|
||||||
pushed = true;
|
pushed = true;
|
||||||
@ -4465,10 +4465,7 @@ void static ProcessGetData(CNode* pfrom, const Consensus::Params& consensusParam
|
|||||||
if (!pushed && inv.type == MSG_TX) {
|
if (!pushed && inv.type == MSG_TX) {
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
if (mempool.lookup(inv.hash, tx)) {
|
if (mempool.lookup(inv.hash, tx)) {
|
||||||
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
|
pfrom->PushMessage(NetMsgType::TX, tx);
|
||||||
ss.reserve(1000);
|
|
||||||
ss << tx;
|
|
||||||
pfrom->PushMessage(NetMsgType::TX, ss);
|
|
||||||
pushed = true;
|
pushed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
17
src/net.cpp
17
src/net.cpp
@ -90,8 +90,8 @@ std::string strSubVersion;
|
|||||||
|
|
||||||
vector<CNode*> vNodes;
|
vector<CNode*> vNodes;
|
||||||
CCriticalSection cs_vNodes;
|
CCriticalSection cs_vNodes;
|
||||||
map<CInv, CDataStream> mapRelay;
|
map<uint256, CTransaction> mapRelay;
|
||||||
deque<pair<int64_t, CInv> > vRelayExpiration;
|
deque<pair<int64_t, uint256> > vRelayExpiration;
|
||||||
CCriticalSection cs_mapRelay;
|
CCriticalSection cs_mapRelay;
|
||||||
limitedmap<uint256, int64_t> mapAlreadyAskedFor(MAX_INV_SZ);
|
limitedmap<uint256, int64_t> mapAlreadyAskedFor(MAX_INV_SZ);
|
||||||
|
|
||||||
@ -2054,14 +2054,6 @@ instance_of_cnetcleanup;
|
|||||||
|
|
||||||
|
|
||||||
void RelayTransaction(const CTransaction& tx, CFeeRate feerate)
|
void RelayTransaction(const CTransaction& tx, CFeeRate feerate)
|
||||||
{
|
|
||||||
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
|
|
||||||
ss.reserve(10000);
|
|
||||||
ss << tx;
|
|
||||||
RelayTransaction(tx, feerate, ss);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RelayTransaction(const CTransaction& tx, CFeeRate feerate, const CDataStream& ss)
|
|
||||||
{
|
{
|
||||||
CInv inv(MSG_TX, tx.GetHash());
|
CInv inv(MSG_TX, tx.GetHash());
|
||||||
{
|
{
|
||||||
@ -2073,9 +2065,8 @@ void RelayTransaction(const CTransaction& tx, CFeeRate feerate, const CDataStrea
|
|||||||
vRelayExpiration.pop_front();
|
vRelayExpiration.pop_front();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save original serialized message so newer versions are preserved
|
mapRelay.insert(std::make_pair(inv.hash, tx));
|
||||||
mapRelay.insert(std::make_pair(inv, ss));
|
vRelayExpiration.push_back(std::make_pair(GetTime() + 15 * 60, inv.hash));
|
||||||
vRelayExpiration.push_back(std::make_pair(GetTime() + 15 * 60, inv));
|
|
||||||
}
|
}
|
||||||
LOCK(cs_vNodes);
|
LOCK(cs_vNodes);
|
||||||
BOOST_FOREACH(CNode* pnode, vNodes)
|
BOOST_FOREACH(CNode* pnode, vNodes)
|
||||||
|
@ -161,8 +161,8 @@ extern int nMaxConnections;
|
|||||||
|
|
||||||
extern std::vector<CNode*> vNodes;
|
extern std::vector<CNode*> vNodes;
|
||||||
extern CCriticalSection cs_vNodes;
|
extern CCriticalSection cs_vNodes;
|
||||||
extern std::map<CInv, CDataStream> mapRelay;
|
extern std::map<uint256, CTransaction> mapRelay;
|
||||||
extern std::deque<std::pair<int64_t, CInv> > vRelayExpiration;
|
extern std::deque<std::pair<int64_t, uint256> > vRelayExpiration;
|
||||||
extern CCriticalSection cs_mapRelay;
|
extern CCriticalSection cs_mapRelay;
|
||||||
extern limitedmap<uint256, int64_t> mapAlreadyAskedFor;
|
extern limitedmap<uint256, int64_t> mapAlreadyAskedFor;
|
||||||
|
|
||||||
@ -773,7 +773,6 @@ public:
|
|||||||
|
|
||||||
class CTransaction;
|
class CTransaction;
|
||||||
void RelayTransaction(const CTransaction& tx, CFeeRate feerate);
|
void RelayTransaction(const CTransaction& tx, CFeeRate feerate);
|
||||||
void RelayTransaction(const CTransaction& tx, CFeeRate feerate, const CDataStream& ss);
|
|
||||||
|
|
||||||
/** Access to the (IP) address database (peers.dat) */
|
/** Access to the (IP) address database (peers.dat) */
|
||||||
class CAddrDB
|
class CAddrDB
|
||||||
|
Loading…
Reference in New Issue
Block a user