From 5d62288e43ae0b487615638c2735b82d8e36952f Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Wed, 5 Aug 2026 13:36:59 -0700 Subject: [PATCH] hash some additional message types --- src/overlay/Peer.cpp | 18 ++++++++++++++---- src/overlay/Peer.h | 5 +++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/overlay/Peer.cpp b/src/overlay/Peer.cpp index 29111bd808..665775677a 100644 --- a/src/overlay/Peer.cpp +++ b/src/overlay/Peer.cpp @@ -174,6 +174,13 @@ CapacityTrackedMessage::CapacityTrackedMessage(std::weak_ptr peer, { mMaybeHash = xdrBlake2(msg); } + if (mMsg.type() == GET_SCP_QUORUMSET || mMsg.type() == GET_TX_SET) + { + BLAKE2 blake; + blake.add(xdrBlake2(msg)); + blake.add(xdrBlake2(self->getPeerID())); + mMaybeHash = blake.finish(); + } auto populateTxMap = [&](StellarMessage const& msg, Hash const& hash) { auto transaction = TransactionFrameBase::makeTransactionFromWire( @@ -829,9 +836,11 @@ void Peer::sendMessage(std::shared_ptr msg, bool log) { ZoneScoped; - - CLOG_TRACE(Overlay, "send: {} to : {}", msgSummary(*msg), - mAppConnector.getConfig().toShortString(mPeerID)); + { + RECURSIVE_LOCK_GUARD(mStateMutex, guard); + CLOG_TRACE(Overlay, "send: {} to : {}", msgSummary(*msg), + mAppConnector.getConfig().toShortString(mPeerID)); + } switch (msg->type()) { @@ -1687,6 +1696,7 @@ Peer::recvGetSCPState(StellarMessage const& msg) releaseAssert(threadIsMain()); if (!process(mSCPStateQueryInfo, GET_SCP_STATE_MAX_RATE)) { + RECURSIVE_LOCK_GUARD(mStateMutex, guard); CLOG_DEBUG(Overlay, "Dropping GET_SCP_STATE request from {}", KeyUtils::toShortString(mPeerID)); return; @@ -1771,7 +1781,7 @@ Peer::updatePeerRecordAfterAuthentication() mAppConnector.getOverlayManager().getPeerManager().update( getAddress(), PeerManager::BackOffUpdate::RESET); } - + RECURSIVE_LOCK_GUARD(mStateMutex, guard); CLOG_DEBUG(Overlay, "successful handshake with {}@{}", mAppConnector.getConfig().toShortString(mPeerID), toString()); } diff --git a/src/overlay/Peer.h b/src/overlay/Peer.h index 3435338fe3..1b5fb3c581 100644 --- a/src/overlay/Peer.h +++ b/src/overlay/Peer.h @@ -12,6 +12,7 @@ #include "overlay/Hmac.h" #include "overlay/PeerBareAddress.h" #include "transactions/TransactionFrameBase.h" +#include "util/GlobalChecks.h" #include "util/NonCopyable.h" #include "util/ThreadAnnotations.h" #include "util/Timer.h" @@ -258,7 +259,7 @@ class Peer : public std::enable_shared_from_this, // synchronize access manually private: PeerState mState GUARDED_BY(mStateMutex); - NodeID mPeerID; + NodeID mPeerID GUARDED_BY(mStateMutex); uint256 mSendNonce; uint256 mRecvNonce; @@ -415,7 +416,7 @@ class Peer : public std::enable_shared_from_this, NodeID getPeerID() const { - releaseAssert(threadIsMain()); + RECURSIVE_LOCK_GUARD(mStateMutex, guard); return mPeerID; }