Commit Graph

13964 Commits

Author SHA1 Message Date
tequ
dc7b404538 Merge branch 'sync-2.0.1-conan' into sync-2.1.0-conan 2025-05-06 14:58:44 +09:00
tequ
e04d5911de Merge branch 'sync-2.0.0-conan' into sync-2.0.1-conan 2025-05-06 14:58:18 +09:00
tequ
8f4a9f44f6 Merge branch 'sync-1.12.0-conan' into sync-2.0.0-conan 2025-05-06 14:57:52 +09:00
tequ
a4bb9b9629 Merge branch 'tmp-conan' into sync-1.12.0-conan 2025-05-05 12:56:05 +09:00
RichardAH
9b47d06c64 Merge branch 'dev' into tmp-conan 2025-05-03 12:31:28 +10:00
RichardAH
615f56570a Sus pat (#507) 2025.5.1-release+1762 2025-05-01 17:23:56 +10:00
RichardAH
5e005cd6ee remove false positives from sus pat finder (#506) 2025-05-01 09:54:41 +10:00
Denis Angell
34b3442e00 Merge branch 'dev' into tmp-conan 2025-04-30 11:52:25 +02:00
Denis Angell
80a7197590 fix warnings (#505) 2025-04-30 11:51:58 +02:00
Denis Angell
dd5d580b97 [fold] bad merge 2025-04-30 10:39:12 +02:00
Denis Angell
e4478fa883 revert build in docker changes 2025-04-30 10:33:43 +02:00
tequ
2876888a20 Merge branch 'tmp-conan' into sync-1.12.0-conan 2025-04-29 16:34:04 +09:00
RichardAH
857eefc829 Merge branch 'dev' into tmp-conan 2025-04-29 13:42:34 +10:00
tequ
7b581443d1 Suppress build warning introduced in Catalogue (#499) 2025-04-29 08:25:55 +10:00
tequ
5400f43359 Supress logs for Catalogue_test, Import_test (#495) 2025-04-24 17:46:09 +10:00
Denis Angell
8cf7d485ab fix: ledger_index (#498) 2025-04-24 16:45:01 +10:00
tequ
372f25d09b Remove #ifndef DEBUG guards and exception handling wrappers (#496) 2025-04-24 16:38:14 +10:00
Denis Angell
401395a204 patch remarks (#497) 2025-04-24 16:36:57 +10:00
Denis Angell
8ac2887961 Merge branch 'dev' into tmp-conan 2025-04-23 15:57:12 +02:00
Denis Angell
b87120ebc6 update conan boost 2025-04-23 15:56:13 +02:00
Ed Hennis
805e550f12 test: guarantee proper lifetime for temporary Rules object: (#4917)
* Commit 01c37fe introduced a change to the STTx unit test where a local
  "defaultRules" object was created with a temporary inline "presets"
  value provided to the ctor. Rules::Impl stores a const ref to the
  presets provided to the ctor.  This particular call provided an inline
  temp variable, which goes out of scope as soon as the object is
  created. On Windows, attempting to use the presets (e.g. via the
  enabled() function) causes an access violation, which crashes the test
  run.
* An audit of the code indicates that all other instances of Rules use
  the Application's config.features list, which will have a sufficient
  lifetime.
2025-04-23 22:21:09 +09:00
Gregory Tsipenyuk
9f5fb80647 fixInnerObjTemplate: set inner object template (#4906)
Add `STObject` constructor to explicitly set the inner object template.
This allows certain AMM transactions to apply in the same ledger:

There is no issue if the trading fee is greater than or equal to 0.01%.
If the trading fee is less than 0.01%, then:
- After AMM create, AMM transactions must wait for one ledger to close
  (3-5 seconds).
- After one ledger is validated, all AMM transactions succeed, as
  appropriate, except for AMMVote.
- The first AMMVote which votes for a 0 trading fee in a ledger will
  succeed. Subsequent AMMVote transactions which vote for a 0 trading
  fee will wait for the next ledger (3-5 seconds). This behavior repeats
  for each ledger.

This has no effect on the ultimate correctness of AMM. This amendment
will allow the transactions described above to succeed as expected, even
if the trading fee is 0 and the transactions are applied within one
ledger (block).
2025-04-23 22:20:50 +09:00
tequ
9d09ee12b5 Remove #ifndef DEBUG guards and exception handling wrappers 2025-04-23 22:12:16 +09:00
Chenna Keshava B S
2e586b3f12 feat: allow port_grpc to be specified in [server] stanza (#4728)
Prior to this commit, `port_grpc` could not be added to the [server]
stanza. Instead of validating gRPC IP/Port/Protocol information in
ServerHandler, validate grpc port info in GRPCServer constructor. This
should not break backwards compatibility.

gRPC-related config info must be in a section (stanza) called
[port_gprc].

* Close #4015 - That was an alternate solution. It was decided that with
  relaxed validation, it is not necessary to rename port_grpc.
* Fix #4557
2025-04-23 16:42:05 +09:00
Michael Legleux
51eee6254c build: add headers needed in Conan package for libxrpl (#4885)
These headers are required in the xrpl Conan package in order for
xbridge witness server (xbwd) to build. This change to libxrpl may help
any dependents of libxrpl. This addition does not change any C++ code.
2025-04-23 16:30:18 +09:00
Shawn Xie
4847bebea4 fixNFTokenReserve: ensure NFT tx fails when reserve is not met (#4767)
Without this amendment, an NFTokenAcceptOffer transaction can succeed
even when the NFToken recipient does not have sufficient reserves for
the new NFTokenPage. This allowed accounts to accept NFT sell offers
without having a sufficient reserve. (However, there was no issue in
brokered mode or when a buy offer is involved.)

Instead, the transaction should fail with `tecINSUFFICIENT_RESERVE` as
appropriate. The `fixNFTokenReserve` amendment adds checks in the
NFTokenAcceptOffer transactor to check if the OwnerCount changed. If it
did, then it checks the new reserve requirement.

Fix #4679
2025-04-23 16:29:41 +09:00
tequ
7168266ccf Merge branch 'sync-2.0.1-conan' into sync-2.1.0-conan 2025-04-23 16:21:58 +09:00
tequ
e38dcd3acd Merge branch 'sync-2.0.0-conan' into sync-2.0.1-conan 2025-04-23 11:33:15 +09:00
tequ
5ba9e871c5 bad merge: RPCCall_test, Transaction_test 2025-04-23 11:32:35 +09:00
Ed Hennis
a95d4ad6ca Fix cahce bug introduced in 2.0.1
Partially chery-picked from f419c18056
2025-04-23 10:41:05 +09:00
John Freeman
53dd3d1892 fix(libxrpl): change library names in Conan recipe (#4831)
Use consistent platform-agnostic library names on all platforms.

Fix an issue that prevents dependents like validator-keys-tool from
linking to libxrpl on Windows.

It is bad practice to change the binary base name depending on the
platform. CMake already manipulates the base name into a final name that
fits the conventions of the platform. Linkers accept base names on the
command line and then look for conventional names on disk.
2025-04-22 15:00:33 +09:00
Bronek Kozicki
70513b8fca test: add unit test for redundant payment (#4860)
If the payee and payer are the same account, then the transaction fails
in preflight with temREDUNDANT.
2025-04-22 14:59:52 +09:00
Bronek Kozicki
ad90852fa5 test: improve code coverage reporting (#4849)
* Speed up the generation of coverage reports by using multiple cores.

* Add codecov step to coverage workflow.
2025-04-22 14:38:45 +09:00
Chenna Keshava B S
469a3fb3b0 docs: update help message about unit test-suite pattern matching (#4846)
Update the "rippled --help" message for the "-u" parameter. This
documents the unit test name pattern matching rule implemented by #4634.

Fix #4800
2025-04-22 14:28:09 +09:00
Elliot Lee
0bc2a3ba0f docs: add Performance type to PR template (#4875) 2025-04-22 14:27:36 +09:00
Bronek Kozicki
fda383b6a4 test: add DeliverMax to more JSONRPC tests (#4826)
Minor change in unit tests to improve testing scope.
2025-04-22 14:27:11 +09:00
John Freeman
387f789a20 fix: change default send_queue_limit to 500 (#4867)
Clients subscribed to `transactions` over WebSocket are being
disconnected because the traffic exceeds the default `send_queue_limit`
of 100.

This commit changes the default configuration, not the default in code.

Fix #4866
2025-04-22 14:27:02 +09:00
Ed Hennis
fbe221c987 Improve lifetime management of ledger objects (SLEs) to prevent runaway memory usage: (#4822)
* Add logging for Application.cpp sweep()
* Improve lifetime management of ledger objects (`SLE`s)
* Only store SLE digest in CachedView; get SLEs from CachedSLEs
* Also force release of last ledger used for path finding if there are
  no path finding requests to process
* Count more ST objects (derive from `CountedObject`)
* Track CachedView stats in CountedObjects
* Rename the CachedView counters
* Fix the scope of the digest lookup lock

Before this patch, if you asked "is it caching?" It was always caching.
2025-04-22 14:25:27 +09:00
Ed Hennis
a124e54f6b WebSocket should only call async_close once (#4848)
Prevent WebSocket connections from trying to close twice.

The issue only occurs in debug builds (assertions are disabled in
release builds, including published packages), and when the WebSocket
connections are unprivileged. The assert (and WRN log) occurs when a
client drives up the resource balance enough to be forcibly disconnected
while there are still messages pending to be sent.

Thanks to @lathanbritz for discovering this issue in #4822.
2025-04-22 14:25:15 +09:00
Hussein Badakhchani
8f30d8dcfc fix typo: 'of' instead of 'on' (#4821)
Co-authored-by: Hussein Badakhchani <hoos@alsoug.com>
2025-04-19 01:10:17 +09:00
Bronek Kozicki
3e0324081b Workarounds for gcc-13 compatibility (#4817)
Workaround for compilation errors with gcc-13 and other compilers
relying on `libstdc++` version 13. This is temporary until actual fix is
available for us to use: https://github.com/boostorg/beast/pull/2682

Some boost.beast files (which we do use) rely on an old gcc-12 behaviour
where `#include <cstdint>` was not needed even though types from this
header were used. This was broken by a change in libstdc++ version 13:
https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes

The necessary fix was implemented in boost.beast, however it is not yet
available. Until it is available, we can use this workaround to enable
compilation of `rippled` with gcc-13, clang-16, etc.
2025-04-19 01:10:02 +09:00
Bronek Kozicki
8ea213413a APIv2: show DeliverMax in submit, submit_multisigned (#4827)
Show `DeliverMax` instead of `Amount` in output from `submit`,
`submit_multisigned`, `sign`, and `sign_for`.

Fix #4829
2025-04-19 01:09:24 +09:00
Bronek Kozicki
7b3da1b0f7 APIv2: consistently return ledger_index as integer (#4820)
For api_version 2, always return ledger_index as integer in JSON output.

api_version 1 retains prior behavior.
2025-04-19 01:09:00 +09:00
Bronek Kozicki
07de989780 Fix 2.0 regression in tx method with binary output (#4812)
* Fix binary output from tx method

* Formatting fix

* Minor test improvement

* Minor test improvements
2025-04-19 00:57:27 +09:00
Bronek Kozicki
f589fb3f03 Promote API version 2 to supported (#4803)
* Promote API version 2 to supported

* Switch command line to API version 1

* Fix LedgerRequestRPC test

* Remove obsolete tx_account method

This method is not implemented, the only parts which are removed are related to command-line parsing

* Fix RPCCall test

* Reduce diff size, small test improvements

* Minor fixes

* Support for the mold linker

* [fold] handle case where both mold and gold are installed

* [fold] Use first non-default linker

* Fix TransactionEntry_test

* Fix AccountTx_test

---------

Co-authored-by: seelabs <scott.determan@yahoo.com>
2025-04-19 00:56:50 +09:00
Scott Determan
691a1a5610 Support for the mold linker (#4807) 2025-04-19 00:56:12 +09:00
Bronek Kozicki
36eb3d113a Unify JSON serialization format of transactions (#4775)
* Remove include <ranges>

* Formatting fix

* Output for subscriptions

* Output from sign, submit etc.

* Output from ledger

* Output from account_tx

* Output from transaction_entry

* Output from tx

* Store close_time_iso in API v2 output

* Add small APIv2 unit test for subscribe

* Add unit test for transaction_entry

* Add unit test for tx

* Remove inLedger from API version 2

* Set ledger_hash and ledger_index

* Move isValidated from RPCHelpers to LedgerMaster

* Store closeTime in LedgerFill

* Time formatting fix

* additional tests for Subscribe unit tests

* Improved comments

* Rename mInLedger to mLedgerIndex

* Minor fixes

* Set ledger_hash on closed ledger, even if not validated

* Update API-CHANGELOG.md

* Add ledger_hash, ledger_index to transaction_entry

* Fix validated and close_time_iso in account_tx

* Fix typos

* Improve getJson for Transaction and STTx

* Minor improvements

* Replace class enum JsonOptions with struct

We may consider turning this into a general-purpose template and using it elsewhere

* simplify the extraction of transactionID from Transaction object

* Remove obsolete comments

* Unconditionally set validated in account_tx output

* Minor improvements

* Minor fixes

---------

Co-authored-by: Chenna Keshava <ckeshavabs@gmail.com>
2025-04-19 00:54:42 +09:00
Scott Determan
c6c2983cf2 fix: check for valid public key in attestations (#4798) 2025-04-19 00:08:08 +09:00
pwang200
99225d5aee Fix unit test api_version to enable api_version 2 (#4785)
The command line API still uses `apiMaximumSupportedVersion`.
The unit test RPCs use `apiMinimumSupportedVersion` if unspecified.

Context:
- #4568
- #4552
2025-04-19 00:07:53 +09:00
Gregory Tsipenyuk
46b1b9e63c fixFillOrKill: fix offer crossing with tfFillOrKill (#4694)
Introduce the `fixFillOrKill` amendment.

Fix an edge case occurring when an offer with `tfFillOrKill` set (but
without `tfSell` set) fails to cross an offer with a better rate. If
`tfFillOrKill` is set, then the owner must receive the full TakerPays.
Without this amendment, an offer fails if the entire `TakerGets` is not
spent. With this amendment, when `tfSell` is not set, the entire
`TakerGets` does not have to be spent.

For details about OfferCreate, see: https://xrpl.org/offercreate.html

Fix #4684

---------

Co-authored-by: Scott Schurr <scott@ripple.com>
2025-04-19 00:02:29 +09:00