Merge bitcoin/bitcoin#21775: p2p: Limit m_block_inv_mutex

fac96d0265 p2p: Limit m_block_inv_mutex (MarcoFalke)

Pull request description:

  Keeping the lock longer than needed is confusing to reviewers and thread analysis. For example, keeping the lock while appending tx-invs, which requires the mempool lock, will tell thread analysis tools an incorrect lock order of `(1) m_block_inv_mutex, (2) pool.cs`.

ACKs for top commit:
  Crypt-iQ:
    crACK fac96d0265
  jnewbery:
    utACK fac96d0265
  theStack:
    Code-Review ACK fac96d0265

Tree-SHA512: fcfac0f1f8b16df7522513abf716b2eed3d2fc9153f231c8cb61f451e342f29c984a5c872deca6bab3e601e5d651874cc229146c9370e46811b4520747a21f2b
pull/21845/head
MarcoFalke 4 years ago
commit b8593616dc
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548

@ -4449,8 +4449,9 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
} }
} }
peer->m_blocks_for_inv_relay.clear(); peer->m_blocks_for_inv_relay.clear();
}
if (pto->m_tx_relay != nullptr) { if (pto->m_tx_relay != nullptr) {
LOCK(pto->m_tx_relay->cs_tx_inventory); LOCK(pto->m_tx_relay->cs_tx_inventory);
// Check whether periodic sends should happen // Check whether periodic sends should happen
bool fSendTrickle = pto->HasPermission(PF_NOBAN); bool fSendTrickle = pto->HasPermission(PF_NOBAN);
@ -4578,7 +4579,6 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
} }
} }
} }
}
} }
if (!vInv.empty()) if (!vInv.empty())
m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv)); m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv));

Loading…
Cancel
Save