Merge pull request #6966

42403c7 Fix CLI and unrestricted RPC relay_tx with stempool (vtnerd)
This commit is contained in:
luigi1111 2020-11-04 10:37:18 -06:00
commit 7fa01f342c
No known key found for this signature in database
GPG key ID: F4ACA0183641E010

View file

@ -2832,6 +2832,8 @@ namespace cryptonote
RPC_TRACKER(relay_tx); RPC_TRACKER(relay_tx);
CHECK_PAYMENT_MIN1(req, res, req.txids.size() * COST_PER_TX_RELAY, false); CHECK_PAYMENT_MIN1(req, res, req.txids.size() * COST_PER_TX_RELAY, false);
const bool restricted = m_restricted && ctx;
bool failed = false; bool failed = false;
res.status = ""; res.status = "";
for (const auto &str: req.txids) for (const auto &str: req.txids)
@ -2845,12 +2847,16 @@ namespace cryptonote
continue; continue;
} }
//TODO: The get_pool_transaction could have an optional meta parameter
bool broadcasted = false;
cryptonote::blobdata txblob; cryptonote::blobdata txblob;
if (m_core.get_pool_transaction(txid, txblob, relay_category::legacy)) if ((broadcasted = m_core.get_pool_transaction(txid, txblob, relay_category::broadcasted)) || (!restricted && m_core.get_pool_transaction(txid, txblob, relay_category::all)))
{ {
// The settings below always choose i2p/tor if enabled. Otherwise, do fluff iff previously relayed else dandelion++ stem.
NOTIFY_NEW_TRANSACTIONS::request r; NOTIFY_NEW_TRANSACTIONS::request r;
r.txs.push_back(std::move(txblob)); r.txs.push_back(std::move(txblob));
m_core.get_protocol()->relay_transactions(r, boost::uuids::nil_uuid(), epee::net_utils::zone::invalid, relay_method::local); const auto tx_relay = broadcasted ? relay_method::fluff : relay_method::local;
m_core.get_protocol()->relay_transactions(r, boost::uuids::nil_uuid(), epee::net_utils::zone::invalid, tx_relay);
//TODO: make sure that tx has reached other nodes here, probably wait to receive reflections from other nodes //TODO: make sure that tx has reached other nodes here, probably wait to receive reflections from other nodes
} }
else else