@@ -3847,10 +3847,10 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
3847
3847
if (fSendTrickle && pto->m_tx_relay ->fSendMempool ) {
3848
3848
auto vtxinfo = mempool.infoAll ();
3849
3849
pto->m_tx_relay ->fSendMempool = false ;
3850
- CAmount filterrate = 0 ;
3850
+ CFeeRate filterrate;
3851
3851
{
3852
3852
LOCK (pto->m_tx_relay ->cs_feeFilter );
3853
- filterrate = pto->m_tx_relay ->minFeeFilter ;
3853
+ filterrate = CFeeRate ( pto->m_tx_relay ->minFeeFilter ) ;
3854
3854
}
3855
3855
3856
3856
LOCK (pto->m_tx_relay ->cs_filter );
@@ -3859,9 +3859,9 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
3859
3859
const uint256& hash = txinfo.tx ->GetHash ();
3860
3860
CInv inv (MSG_TX, hash);
3861
3861
pto->m_tx_relay ->setInventoryTxToSend .erase (hash);
3862
- if (filterrate) {
3863
- if (txinfo.feeRate . GetFeePerK () < filterrate)
3864
- continue ;
3862
+ // Don't send transactions that peers will not put into their mempool
3863
+ if (txinfo.fee < filterrate. GetFee (txinfo. vsize )) {
3864
+ continue ;
3865
3865
}
3866
3866
if (pto->m_tx_relay ->pfilter ) {
3867
3867
if (!pto->m_tx_relay ->pfilter ->IsRelevantAndUpdate (*txinfo.tx )) continue ;
@@ -3884,10 +3884,10 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
3884
3884
for (std::set<uint256>::iterator it = pto->m_tx_relay ->setInventoryTxToSend .begin (); it != pto->m_tx_relay ->setInventoryTxToSend .end (); it++) {
3885
3885
vInvTx.push_back (it);
3886
3886
}
3887
- CAmount filterrate = 0 ;
3887
+ CFeeRate filterrate;
3888
3888
{
3889
3889
LOCK (pto->m_tx_relay ->cs_feeFilter );
3890
- filterrate = pto->m_tx_relay ->minFeeFilter ;
3890
+ filterrate = CFeeRate ( pto->m_tx_relay ->minFeeFilter ) ;
3891
3891
}
3892
3892
// Topologically and fee-rate sort the inventory we send for privacy and priority reasons.
3893
3893
// A heap is used so that not all items need sorting if only a few are being sent.
@@ -3914,7 +3914,8 @@ bool PeerLogicValidation::SendMessages(CNode* pto)
3914
3914
if (!txinfo.tx ) {
3915
3915
continue ;
3916
3916
}
3917
- if (filterrate && txinfo.feeRate .GetFeePerK () < filterrate) {
3917
+ // Peer told you to not send transactions at that feerate? Don't bother sending it.
3918
+ if (txinfo.fee < filterrate.GetFee (txinfo.vsize )) {
3918
3919
continue ;
3919
3920
}
3920
3921
if (pto->m_tx_relay ->pfilter && !pto->m_tx_relay ->pfilter ->IsRelevantAndUpdate (*txinfo.tx )) continue ;
0 commit comments