net_processing: move a debug check in VERACK processing earlier
The following commit will interrupt the processing of the `VERACK` message earlier for private broadcast connections. The `Assume()` would be nice to have for private broadcast as well, so move it earlier. This is a non-functional change.
This commit is contained in:
1 file changed
+14
-14
+14
-14
@@ -3719,6 +3719,20 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|||||||
LogInfo("%s", new_peer_msg());
|
LogInfo("%s", new_peer_msg());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (auto tx_relay = peer->GetTxRelay()) {
|
||||||
|
// `TxRelay::m_tx_inventory_to_send` must be empty before the
|
||||||
|
// version handshake is completed as
|
||||||
|
// `TxRelay::m_next_inv_send_time` is first initialised in
|
||||||
|
// `SendMessages` after the verack is received. Any transactions
|
||||||
|
// received during the version handshake would otherwise
|
||||||
|
// immediately be advertised without random delay, potentially
|
||||||
|
// leaking the time of arrival to a spy.
|
||||||
|
Assume(WITH_LOCK(
|
||||||
|
tx_relay->m_tx_inventory_mutex,
|
||||||
|
return tx_relay->m_tx_inventory_to_send.empty() &&
|
||||||
|
tx_relay->m_next_inv_send_time == 0s));
|
||||||
|
}
|
||||||
|
|
||||||
if (pfrom.GetCommonVersion() >= SHORT_IDS_BLOCKS_VERSION) {
|
if (pfrom.GetCommonVersion() >= SHORT_IDS_BLOCKS_VERSION) {
|
||||||
// Tell our peer we are willing to provide version 2 cmpctblocks.
|
// Tell our peer we are willing to provide version 2 cmpctblocks.
|
||||||
// However, we do not request new block announcements using
|
// However, we do not request new block announcements using
|
||||||
@@ -3737,20 +3751,6 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto tx_relay = peer->GetTxRelay()) {
|
|
||||||
// `TxRelay::m_tx_inventory_to_send` must be empty before the
|
|
||||||
// version handshake is completed as
|
|
||||||
// `TxRelay::m_next_inv_send_time` is first initialised in
|
|
||||||
// `SendMessages` after the verack is received. Any transactions
|
|
||||||
// received during the version handshake would otherwise
|
|
||||||
// immediately be advertised without random delay, potentially
|
|
||||||
// leaking the time of arrival to a spy.
|
|
||||||
Assume(WITH_LOCK(
|
|
||||||
tx_relay->m_tx_inventory_mutex,
|
|
||||||
return tx_relay->m_tx_inventory_to_send.empty() &&
|
|
||||||
tx_relay->m_next_inv_send_time == 0s));
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
LOCK2(::cs_main, m_tx_download_mutex);
|
LOCK2(::cs_main, m_tx_download_mutex);
|
||||||
const CNodeState* state = State(pfrom.GetId());
|
const CNodeState* state = State(pfrom.GetId());
|
||||||
|
|||||||
Reference in new issue
Block a user