mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-22 14:50:54 +00:00
Fixes
This commit is contained in:
@@ -5,7 +5,7 @@ Loop: test.jtx test.unit_test
|
||||
test.unit_test == test.jtx
|
||||
|
||||
Loop: xrpld.app xrpld.overlay
|
||||
xrpld.overlay ~= xrpld.app
|
||||
xrpld.overlay == xrpld.app
|
||||
|
||||
Loop: xrpld.app xrpld.peerfinder
|
||||
xrpld.peerfinder == xrpld.app
|
||||
|
||||
@@ -1010,7 +1010,7 @@ public:
|
||||
// Charlie - queue a transaction, with a higher fee
|
||||
// than default
|
||||
env(noop(charlie), fee(15), queued);
|
||||
checkMetrics(*this, env, 6, initQueueMax, 4, 3, 257);
|
||||
checkMetrics(*this, env, 6, initQueueMax, 4, 3, 256);
|
||||
|
||||
BEAST_EXPECT(env.seq(alice) == aliceSeq);
|
||||
BEAST_EXPECT(env.seq(bob) == bobSeq);
|
||||
|
||||
@@ -825,30 +825,33 @@ InboundLedger::receiveNode(protocol::TMLedgerData& packet, SHAMapAddNode& san)
|
||||
if (!validateLedgerNode(app_, ledger_node))
|
||||
{
|
||||
JLOG(journal_.warn()) << "Got malformed ledger node";
|
||||
san.incInvalid();
|
||||
return;
|
||||
}
|
||||
|
||||
auto const node_slice = makeSlice(ledger_node.nodedata());
|
||||
auto const tree_node = SHAMapTreeNode::makeFromWire(node_slice);
|
||||
if (!tree_node)
|
||||
auto const tree_node_opt = getTreeNode(node_slice);
|
||||
if (!tree_node_opt)
|
||||
{
|
||||
JLOG(journal_.warn()) << "Got invalid node data";
|
||||
san.incInvalid();
|
||||
return;
|
||||
}
|
||||
auto const tree_node = *tree_node_opt;
|
||||
|
||||
auto const& node_id = getSHAMapNodeID(app_, ledger_node, tree_node);
|
||||
if (!node_id)
|
||||
auto const node_id_opt = getSHAMapNodeID(app_, ledger_node, tree_node);
|
||||
if (!node_id_opt)
|
||||
{
|
||||
JLOG(journal_.warn()) << "Got invalid node id";
|
||||
san.incInvalid();
|
||||
return;
|
||||
}
|
||||
auto const& node_id = *node_id_opt;
|
||||
|
||||
if (node_id->isRoot())
|
||||
if (node_id.isRoot())
|
||||
san += map.addRootNode(rootHash, node_slice, f);
|
||||
else
|
||||
san += map.addKnownNode(*node_id, node_slice, f);
|
||||
san += map.addKnownNode(node_id, node_slice, f);
|
||||
|
||||
if (!san.isGood())
|
||||
{
|
||||
|
||||
@@ -222,9 +222,10 @@ public:
|
||||
return;
|
||||
|
||||
auto const node_slice = makeSlice(ledger_node.nodedata());
|
||||
auto const tree_node = SHAMapTreeNode::makeFromWire(node_slice);
|
||||
if (!tree_node)
|
||||
auto const tree_node_opt = getTreeNode(node_slice);
|
||||
if (!tree_node_opt)
|
||||
return;
|
||||
auto const tree_node = *tree_node_opt;
|
||||
|
||||
s.erase();
|
||||
tree_node->serializeWithPrefix(s);
|
||||
|
||||
@@ -141,23 +141,25 @@ public:
|
||||
}
|
||||
|
||||
auto const node_slice = makeSlice(ledger_node.nodedata());
|
||||
auto const tree_node = SHAMapTreeNode::makeFromWire(node_slice);
|
||||
if (!tree_node)
|
||||
auto const tree_node_opt = getTreeNode(node_slice);
|
||||
if (!tree_node_opt)
|
||||
{
|
||||
JLOG(j_.warn()) << "Got invalid node data";
|
||||
peer->charge(Resource::feeInvalidData, "node_data");
|
||||
return;
|
||||
}
|
||||
auto const tree_node = *tree_node_opt;
|
||||
|
||||
auto const& node_id = getSHAMapNodeID(app_, ledger_node, tree_node);
|
||||
if (!node_id)
|
||||
auto const node_id_opt = getSHAMapNodeID(app_, ledger_node, tree_node);
|
||||
if (!node_id_opt)
|
||||
{
|
||||
JLOG(j_.warn()) << "Got invalid node id";
|
||||
peer->charge(Resource::feeInvalidData, "node_id");
|
||||
return;
|
||||
}
|
||||
auto const& node_id = *node_id_opt;
|
||||
|
||||
data.emplace_back(std::make_pair(*node_id, node_slice));
|
||||
data.emplace_back(std::make_pair(node_id, node_slice));
|
||||
}
|
||||
|
||||
if (!ta->takeNodes(data, peer).isUseful())
|
||||
|
||||
@@ -22,6 +22,19 @@ validateLedgerNode(Application& app, protocol::TMLedgerNode const& ledger_node)
|
||||
return ledger_node.has_nodeid();
|
||||
}
|
||||
|
||||
inline std::optional<intr_ptr::SharedPtr<SHAMapTreeNode>>
|
||||
getTreeNode(Slice const& node_slice)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SHAMapTreeNode::makeFromWire(node_slice);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
}
|
||||
|
||||
inline std::optional<SHAMapNodeID>
|
||||
getSHAMapNodeID(
|
||||
Application& app,
|
||||
|
||||
Reference in New Issue
Block a user