mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-08 14:47:31 +02:00
rpc: Add abortprivatebroadcast
Co-authored-by: l0rinc <pap.lorinc@gmail.com>
This commit is contained in:
@@ -543,6 +543,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);
|
||||
std::vector<PrivateBroadcast::TxBroadcastInfo> GetPrivateBroadcastInfo() const override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
std::vector<CTransactionRef> AbortPrivateBroadcast(const uint256& id) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void SendPings() override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void InitiateTxBroadcastToAll(const Txid& txid, const Wtxid& wtxid) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
void InitiateTxBroadcastPrivate(const CTransactionRef& tx) override EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex);
|
||||
@@ -1861,6 +1862,26 @@ std::vector<PrivateBroadcast::TxBroadcastInfo> PeerManagerImpl::GetPrivateBroadc
|
||||
return m_tx_for_private_broadcast.GetBroadcastInfo();
|
||||
}
|
||||
|
||||
std::vector<CTransactionRef> PeerManagerImpl::AbortPrivateBroadcast(const uint256& id)
|
||||
{
|
||||
const auto snapshot{m_tx_for_private_broadcast.GetBroadcastInfo()};
|
||||
std::vector<CTransactionRef> removed_txs;
|
||||
|
||||
size_t connections_cancelled{0};
|
||||
for (const auto& [tx, _] : snapshot) {
|
||||
if (tx->GetHash().ToUint256() != id && tx->GetWitnessHash().ToUint256() != id) continue;
|
||||
if (const auto peer_acks{m_tx_for_private_broadcast.Remove(tx)}) {
|
||||
removed_txs.push_back(tx);
|
||||
if (NUM_PRIVATE_BROADCAST_PER_TX > *peer_acks) {
|
||||
connections_cancelled += (NUM_PRIVATE_BROADCAST_PER_TX - *peer_acks);
|
||||
}
|
||||
}
|
||||
}
|
||||
m_connman.m_private_broadcast.NumToOpenSub(connections_cancelled);
|
||||
|
||||
return removed_txs;
|
||||
}
|
||||
|
||||
void PeerManagerImpl::AddToCompactExtraTransactions(const CTransactionRef& tx)
|
||||
{
|
||||
if (m_opts.max_extra_txs <= 0)
|
||||
|
||||
Reference in New Issue
Block a user