There are some potential feefilter cleanups mentioned and motivated in comment https://github.com/bitcoin/bitcoin/pull/21509#issuecomment-805808485 . If you address the locking one, please be careful and make sure that `round()` is only called under a lock. See https://github.com/bitcoin/bitcoin/pull/21509#issuecomment-807992199

#### Useful skills:

* Bitcoin protocol messages
* Bitcoin Core P2P design
* Running our unit and functional tests

#### Want to work on this issue?

For guidance on contributing, please read [CONTRIBUTING.md](https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md) before opening your pull request.

{
    assert(recentRejects);
    if (m_chainman.ActiveChain().Tip()->GetBlockHash() != hashRecentRejectsChainTip) {
        
        
        
        
        hashRecentRejectsChainTip = m_chainman.ActiveChain().Tip()->GetBlockHash();
        recentRejects->reset();
    }
    const uint256& hash = gtxid.GetHash();
    if (m_orphanage.HaveTx(gtxid)) return true;
    {
        LOCK(m_recent_confirmed_transactions_mutex);
        if (m_recent_confirmed_transactions->contains(hash)) return true;
    }
    return recentRejects->contains(hash) || m_mempool.exists(gtxid);
}
bool PeerManagerImpl::AlreadyHaveBlock(const uint256& block_hash)
{
    return m_chainman.m_blockman.LookupBlockIndex(block_hash) != nullptr;
}
void PeerManagerImpl::SendPings()