mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Compare commits
11 Commits
pratik/Add
...
ximinez/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4d297b54c | ||
|
|
b986395ecc | ||
|
|
d76c69e78d | ||
|
|
06b4e84654 | ||
|
|
80579dca62 | ||
|
|
37c3133a91 | ||
|
|
5c31b55357 | ||
|
|
cc26829d32 | ||
|
|
ebb05195cf | ||
|
|
bd7a9051db | ||
|
|
f4d55c8b77 |
33
BUILD.md
33
BUILD.md
@@ -141,26 +141,37 @@ Alternatively, you can pull the patched recipes into the repository and use them
|
|||||||
locally:
|
locally:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Extract the version number from the lockfile.
|
||||||
|
function extract_version {
|
||||||
|
version=$(cat conan.lock | sed -nE "s@.+${1}/(.+)#.+@\1@p" | head -n1)
|
||||||
|
echo ${version}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Define which recipes to export.
|
||||||
|
recipes=(ed25519 grpc secp256k1 snappy soci)
|
||||||
|
|
||||||
|
# Selectively check out the recipes from our CCI fork.
|
||||||
cd external
|
cd external
|
||||||
mkdir -p conan-center-index
|
mkdir -p conan-center-index
|
||||||
cd conan-center-index
|
cd conan-center-index
|
||||||
git init
|
git init
|
||||||
git remote add origin git@github.com:XRPLF/conan-center-index.git
|
git remote add origin git@github.com:XRPLF/conan-center-index.git
|
||||||
git sparse-checkout init
|
git sparse-checkout init
|
||||||
git sparse-checkout set recipes/ed25519
|
for recipe in ${recipes[@]}; do
|
||||||
git sparse-checkout add recipes/grpc
|
echo "Checking out ${recipe}..."
|
||||||
git sparse-checkout add recipes/secp256k1
|
git sparse-checkout add recipes/${recipe}/all
|
||||||
git sparse-checkout add recipes/snappy
|
done
|
||||||
git sparse-checkout add recipes/soci
|
|
||||||
git fetch origin master
|
git fetch origin master
|
||||||
git checkout master
|
git checkout master
|
||||||
rm -rf .git
|
|
||||||
cd ../..
|
cd ../..
|
||||||
conan export --version 2015.03 external/conan-center-index/recipes/ed25519/all
|
|
||||||
conan export --version 1.72.0 external/conan-center-index/recipes/grpc/all
|
# Export the recipes into the local cache.
|
||||||
conan export --version 0.7.0 external/conan-center-index/recipes/secp256k1/all
|
for recipe in ${recipes[@]}; do
|
||||||
conan export --version 1.1.10 external/conan-center-index/recipes/snappy/all
|
version=$(extract_version ${recipe})
|
||||||
conan export --version 4.0.3 external/conan-center-index/recipes/soci/all
|
echo "Exporting ${recipe}/${version}..."
|
||||||
|
conan export --version $(extract_version ${recipe}) \
|
||||||
|
external/conan-center-index/recipes/${recipe}/all
|
||||||
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
In the case we switch to a newer version of a dependency that still requires a
|
In the case we switch to a newer version of a dependency that still requires a
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
// Add new amendments to the top of this list.
|
// Add new amendments to the top of this list.
|
||||||
// Keep it sorted in reverse chronological order.
|
// Keep it sorted in reverse chronological order.
|
||||||
|
|
||||||
|
XRPL_FIX (BatchInnerSigs, Supported::yes, VoteBehavior::DefaultNo)
|
||||||
XRPL_FEATURE(LendingProtocol, Supported::no, VoteBehavior::DefaultNo)
|
XRPL_FEATURE(LendingProtocol, Supported::no, VoteBehavior::DefaultNo)
|
||||||
XRPL_FEATURE(PermissionDelegationV1_1, Supported::no, VoteBehavior::DefaultNo)
|
XRPL_FEATURE(PermissionDelegationV1_1, Supported::no, VoteBehavior::DefaultNo)
|
||||||
XRPL_FIX (DirectoryLimit, Supported::yes, VoteBehavior::DefaultNo)
|
XRPL_FIX (DirectoryLimit, Supported::yes, VoteBehavior::DefaultNo)
|
||||||
|
|||||||
@@ -2295,9 +2295,12 @@ class Batch_test : public beast::unit_test::suite
|
|||||||
Serializer s;
|
Serializer s;
|
||||||
parsed.object->add(s);
|
parsed.object->add(s);
|
||||||
auto const jrr = env.rpc("submit", strHex(s.slice()))[jss::result];
|
auto const jrr = env.rpc("submit", strHex(s.slice()))[jss::result];
|
||||||
BEAST_EXPECT(
|
BEAST_EXPECTS(
|
||||||
jrr[jss::status] == "success" &&
|
jrr[jss::status] == "error" &&
|
||||||
jrr[jss::engine_result] == "temINVALID_FLAG");
|
jrr[jss::error] == "invalidTransaction" &&
|
||||||
|
jrr[jss::error_exception] ==
|
||||||
|
"fails local checks: Empty SigningPubKey.",
|
||||||
|
to_string(jrr));
|
||||||
|
|
||||||
env.close();
|
env.close();
|
||||||
}
|
}
|
||||||
@@ -4353,6 +4356,7 @@ public:
|
|||||||
using namespace test::jtx;
|
using namespace test::jtx;
|
||||||
auto const sa = testable_amendments();
|
auto const sa = testable_amendments();
|
||||||
testWithFeats(sa);
|
testWithFeats(sa);
|
||||||
|
testWithFeats(sa - fixBatchInnerSigs);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1681,7 +1681,7 @@ NetworkOPsImp::apply(std::unique_lock<std::mutex>& batchLock)
|
|||||||
// only be set if the Batch feature is enabled. If Batch is
|
// only be set if the Batch feature is enabled. If Batch is
|
||||||
// not enabled, the flag is always invalid, so don't relay
|
// not enabled, the flag is always invalid, so don't relay
|
||||||
// it regardless.
|
// it regardless.
|
||||||
!sttx.isFlag(tfInnerBatchTxn))
|
!(sttx.isFlag(tfInnerBatchTxn)))
|
||||||
{
|
{
|
||||||
protocol::TMTransaction tx;
|
protocol::TMTransaction tx;
|
||||||
Serializer s;
|
Serializer s;
|
||||||
|
|||||||
@@ -671,7 +671,10 @@ Transactor::checkSign(
|
|||||||
|
|
||||||
auto const pkSigner = sigObject.getFieldVL(sfSigningPubKey);
|
auto const pkSigner = sigObject.getFieldVL(sfSigningPubKey);
|
||||||
// Ignore signature check on batch inner transactions
|
// Ignore signature check on batch inner transactions
|
||||||
if (parentBatchId && view.rules().enabled(featureBatch))
|
bool const useCtx = view.rules().enabled(fixBatchInnerSigs);
|
||||||
|
if ((useCtx ? parentBatchId.has_value()
|
||||||
|
: sigObject.isFlag(tfInnerBatchTxn)) &&
|
||||||
|
view.rules().enabled(featureBatch))
|
||||||
{
|
{
|
||||||
// Defensive Check: These values are also checked in Batch::preflight
|
// Defensive Check: These values are also checked in Batch::preflight
|
||||||
if (sigObject.isFieldPresent(sfTxnSignature) || !pkSigner.empty() ||
|
if (sigObject.isFieldPresent(sfTxnSignature) || !pkSigner.empty() ||
|
||||||
|
|||||||
@@ -41,6 +41,12 @@ checkValidity(
|
|||||||
Validity::SigBad,
|
Validity::SigBad,
|
||||||
"Malformed: Invalid inner batch transaction."};
|
"Malformed: Invalid inner batch transaction."};
|
||||||
|
|
||||||
|
// This block should probably have never been included in the
|
||||||
|
// original `Batch` implementation. An inner transaction never
|
||||||
|
// has a valid signature.
|
||||||
|
bool const neverValid = rules.enabled(fixBatchInnerSigs);
|
||||||
|
if (!neverValid)
|
||||||
|
{
|
||||||
std::string reason;
|
std::string reason;
|
||||||
if (!passesLocalChecks(tx, reason))
|
if (!passesLocalChecks(tx, reason))
|
||||||
{
|
{
|
||||||
@@ -51,6 +57,7 @@ checkValidity(
|
|||||||
router.setFlags(id, SF_SIGGOOD);
|
router.setFlags(id, SF_SIGGOOD);
|
||||||
return {Validity::Valid, ""};
|
return {Validity::Valid, ""};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (any(flags & SF_SIGBAD))
|
if (any(flags & SF_SIGBAD))
|
||||||
// Signature is known bad
|
// Signature is known bad
|
||||||
|
|||||||
Reference in New Issue
Block a user