mirror of https://github.com/bitcoin/bitcoin.git
Merge 44a726133a
into b510893d00
This commit is contained in:
commit
2bc55c30e3
|
@ -536,7 +536,7 @@ public:
|
|||
std::vector<node::TxOrphanage::OrphanInfo> GetOrphanTransactions() override EXCLUSIVE_LOCKS_REQUIRED(!m_tx_download_mutex);
|
||||
PeerManagerInfo GetInfo() const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void SendPings() override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void RelayTransaction(const Txid& txid, const Wtxid& wtxid) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void ScheduleTxForBroadcastToAll(const Txid& txid, const Wtxid& wtxid) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void SetBestBlock(int height, std::chrono::seconds time) override
|
||||
{
|
||||
m_best_height = height;
|
||||
|
@ -1579,7 +1579,7 @@ void PeerManagerImpl::ReattemptInitialBroadcast(CScheduler& scheduler)
|
|||
CTransactionRef tx = m_mempool.get(txid);
|
||||
|
||||
if (tx != nullptr) {
|
||||
RelayTransaction(txid, tx->GetWitnessHash());
|
||||
ScheduleTxForBroadcastToAll(txid, tx->GetWitnessHash());
|
||||
} else {
|
||||
m_mempool.RemoveUnbroadcastTx(txid, true);
|
||||
}
|
||||
|
@ -2124,7 +2124,7 @@ void PeerManagerImpl::SendPings()
|
|||
for(auto& it : m_peer_map) it.second->m_ping_queued = true;
|
||||
}
|
||||
|
||||
void PeerManagerImpl::RelayTransaction(const Txid& txid, const Wtxid& wtxid)
|
||||
void PeerManagerImpl::ScheduleTxForBroadcastToAll(const Txid& txid, const Wtxid& wtxid)
|
||||
{
|
||||
LOCK(m_peer_mutex);
|
||||
for(auto& it : m_peer_map) {
|
||||
|
@ -3024,7 +3024,7 @@ void PeerManagerImpl::ProcessValidTx(NodeId nodeid, const CTransactionRef& tx, c
|
|||
tx->GetWitnessHash().ToString(),
|
||||
m_mempool.size(), m_mempool.DynamicMemoryUsage() / 1000);
|
||||
|
||||
RelayTransaction(tx->GetHash(), tx->GetWitnessHash());
|
||||
ScheduleTxForBroadcastToAll(tx->GetHash(), tx->GetWitnessHash());
|
||||
|
||||
for (const CTransactionRef& removedTx : replaced_transactions) {
|
||||
AddToCompactExtraTransactions(removedTx);
|
||||
|
@ -4286,7 +4286,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|||
} else {
|
||||
LogPrintf("Force relaying tx %s (wtxid=%s) from peer=%d\n",
|
||||
txid.ToString(), wtxid.ToString(), pfrom.GetId());
|
||||
RelayTransaction(txid, wtxid);
|
||||
ScheduleTxForBroadcastToAll(txid, wtxid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -116,8 +116,13 @@ public:
|
|||
/** Get peer manager info. */
|
||||
virtual PeerManagerInfo GetInfo() const = 0;
|
||||
|
||||
/** Relay transaction to all peers. */
|
||||
virtual void RelayTransaction(const Txid& txid, const Wtxid& wtxid) = 0;
|
||||
/**
|
||||
* Schedule a transaction to be broadcast to all peers at a later time.
|
||||
* This function saves the transaction id to `Peer::TxRelay::m_tx_inventory_to_send` for each peer.
|
||||
* Later, depending on `Peer::TxRelay::m_next_inv_send_time` and if the transaction is in the
|
||||
* mempool an `INV` about it is sent to the peer.
|
||||
*/
|
||||
virtual void ScheduleTxForBroadcastToAll(const Txid& txid, const Wtxid& wtxid) = 0;
|
||||
|
||||
/** Send ping message to all peers */
|
||||
virtual void SendPings() = 0;
|
||||
|
|
|
@ -117,7 +117,7 @@ TransactionError BroadcastTransaction(NodeContext& node, const CTransactionRef t
|
|||
}
|
||||
|
||||
if (relay) {
|
||||
node.peerman->RelayTransaction(txid, wtxid);
|
||||
node.peerman->ScheduleTxForBroadcastToAll(txid, wtxid);
|
||||
}
|
||||
|
||||
return TransactionError::OK;
|
||||
|
|
Loading…
Reference in New Issue