Merge bitcoin/bitcoin#24427: refactor: Release cs_main before MaybeSendFeefilter
faa329fd46refactor: Release cs_main before MaybeSendFeefilter (MarcoFalke) Pull request description: There is no need for any lock to be held, because net processing is single threaded. So holding the validation lock cs_main for sending a feefilter is confusing and might even degrade blockchain-related RPC performance minimally. ACKs for top commit: ajtowns: ACKfaa329fd46; code review only vasild: ACKfaa329fd46Tree-SHA512: 3e7f9faff1631cc64c86fc1a354ada67617ad1e7a046625cc741f4711854eb41ca8aad5a51ef0d94ff65947b68dba8345c9f786b20ee0a8b7a2e8741cfced21f
This commit is contained in:
1 file changed
+2
-5
@@ -415,7 +415,7 @@ private:
|
|||||||
void RelayAddress(NodeId originator, const CAddress& addr, bool fReachable);
|
void RelayAddress(NodeId originator, const CAddress& addr, bool fReachable);
|
||||||
|
|
||||||
/** Send `feefilter` message. */
|
/** Send `feefilter` message. */
|
||||||
void MaybeSendFeefilter(CNode& node, std::chrono::microseconds current_time) EXCLUSIVE_LOCKS_REQUIRED(cs_main);
|
void MaybeSendFeefilter(CNode& node, std::chrono::microseconds current_time);
|
||||||
|
|
||||||
const CChainParams& m_chainparams;
|
const CChainParams& m_chainparams;
|
||||||
CConnman& m_connman;
|
CConnman& m_connman;
|
||||||
@@ -4506,8 +4506,6 @@ void PeerManagerImpl::MaybeSendAddr(CNode& node, Peer& peer, std::chrono::micros
|
|||||||
|
|
||||||
void PeerManagerImpl::MaybeSendFeefilter(CNode& pto, std::chrono::microseconds current_time)
|
void PeerManagerImpl::MaybeSendFeefilter(CNode& pto, std::chrono::microseconds current_time)
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs_main);
|
|
||||||
|
|
||||||
if (m_ignore_incoming_txs) return;
|
if (m_ignore_incoming_txs) return;
|
||||||
if (!pto.m_tx_relay) return;
|
if (!pto.m_tx_relay) return;
|
||||||
if (pto.GetCommonVersion() < FEEFILTER_VERSION) return;
|
if (pto.GetCommonVersion() < FEEFILTER_VERSION) return;
|
||||||
@@ -5054,8 +5052,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
|||||||
|
|
||||||
if (!vGetData.empty())
|
if (!vGetData.empty())
|
||||||
m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::GETDATA, vGetData));
|
m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::GETDATA, vGetData));
|
||||||
|
|
||||||
MaybeSendFeefilter(*pto, current_time);
|
|
||||||
} // release cs_main
|
} // release cs_main
|
||||||
|
MaybeSendFeefilter(*pto, current_time);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user