From a70db7299d34670f9460a236ad6cea3ba27998db Mon Sep 17 00:00:00 2001 From: marta-lokhova Date: Thu, 14 Nov 2024 16:21:53 -0800 Subject: [PATCH] Move SCP background signature verification to after de-dupe check --- src/overlay/Peer.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/overlay/Peer.cpp b/src/overlay/Peer.cpp index e1f3d2c604..22623a3815 100644 --- a/src/overlay/Peer.cpp +++ b/src/overlay/Peer.cpp @@ -908,15 +908,6 @@ Peer::recvAuthenticatedMessage(AuthenticatedMessage&& msg) } } - // Verify SCP signatures when in the background - if (useBackgroundThread() && msg.v0().message.type() == SCP_MESSAGE) - { - auto& envelope = msg.v0().message.envelope(); - PubKeyUtils::verifySig(envelope.statement.nodeID, envelope.signature, - xdr::xdr_to_opaque(mNetworkID, ENVELOPE_TYPE_SCP, - envelope.statement)); - } - // NOTE: Additionally, we may use state snapshots to verify TRANSACTION type // messages in the background. @@ -984,6 +975,16 @@ Peer::recvAuthenticatedMessage(AuthenticatedMessage&& msg) { return true; } + + // Verify SCP signatures when in the background + if (useBackgroundThread() && msg.v0().message.type() == SCP_MESSAGE) + { + auto& envelope = msg.v0().message.envelope(); + PubKeyUtils::verifySig(envelope.statement.nodeID, envelope.signature, + xdr::xdr_to_opaque(mNetworkID, ENVELOPE_TYPE_SCP, + envelope.statement)); + } + // Subtle: move `msgTracker` shared_ptr into the lambda, to ensure // its destructor is invoked from main thread only. Note that we can't use // unique_ptr here, because std::function requires its callable