X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fnet.cpp;h=5ae5ed5efe1582fda572ec69431d4f1976948bf6;hb=9f3020f117dec258f93def05cbdb27d86917a015;hp=72ec614e0fbd23ce5c13779f74556c89db6612a3;hpb=11ffe1ccae2e10f753e65da227355615f5f9d6f7;p=novacoin.git diff --git a/src/net.cpp b/src/net.cpp index 72ec614..5ae5ed5 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1950,3 +1950,31 @@ 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)); + } + + RelayInventory(inv); +}