Commit Graph

11076 Commits

Author SHA1 Message Date
Nik Bougalis
1d08075c43 Simplify Beast code:
- Use std instead of custom Beast classes
- Remove Beast heap block allocator
- Remove function call timer
2016-08-27 18:00:00 -07:00
Howard Hinnant
8a6c7f9208 Move varint out of NuDB
varint is no longer used by NuDB.  It is now only used by codec.h in
nodestore and so has been moved there.
2016-08-27 17:59:36 -07:00
Mike Ellery
fd061bba8a Augment LedgerRequestRPC tests (RIPD-1270):
Add basic ledger_request validation tests to replace the existing
ledger.js tests. Provide tests that trigger some error conditions
in RPC handling code.
2016-08-27 17:59:36 -07:00
Mike Ellery
8f41817cb9 Add ledger_data RPC tests (RIPD-1260):
Migrate ledger-data-test.js to cpp tests. Provide coverage for
paging limits and input error cases.
2016-08-27 17:59:27 -07:00
seelabs
cf8b6be494 Set issuer in balanceHook 2016-08-26 16:08:30 -07:00
seelabs
68e123a8d6 Set version to 0.33.0-b6 2016-08-18 11:34:59 -04:00
seelabs
b92a7d415e Use deferred credits in XRPEndpointStep:
The XRPEndpointStep bypassed the logic in deferred credits and
incorrectly counted funds acquired during a payment as available for
use in the payment. It also incorrectly used the current ownerCount when
calculating the reserve instead of the owner count as it was at the
beginning of the payment (reducing the owner count is analogous to
acquiring funds during a payment.)
2016-08-18 11:34:12 -04:00
JoelKatz
fc73fbd050 Remove old-style pathfinding code
All cases that still used the old RPF code now use new-style pathfinding.
This includes unit tests, RPF requests with a ledger specified, and RPF
requests in standalone mode.
2016-08-18 11:34:12 -04:00
seelabs
ab45c490d7 Require empty string for empty peer account on account_lines:
A recent commit (0d0227e744) broke the
parser for the rpc command `account_lines` such that an empty
string ("") was no longer required for the second parameter. This commit
fixes that bug.

Note the empty peer field string requirement only applies to the rippled
command line. It can be comitted with a ledger via HTTP or WebSocket.
2016-08-16 08:29:01 -04:00
Nik Bougalis
d8b85c00e8 Set version to 0.33.0-b5 2016-08-15 11:21:27 -07:00
Howard Hinnant
e453c14b0a Add SHAMapV2 to supportedAmendments 2016-08-15 11:21:10 -07:00
Mike Ellery
1c6e32ccc2 Migrate SetRegularKey unit tests (RIPD-1258):
Create SetRegularKey test to replace existing js test. Copy and simplify
some existing test logic from Env_test.cpp and MultiSign.test.cpp. Add
coverage for tfUniversalMask tx flag error case.
2016-08-15 11:18:40 -07:00
Mike Ellery
c4e581179c Migrate AccountSet unit tests (RIPD-1249):
Move existing functionality of account_set-tests.js into a native
unit test. Improve coverage by testing more cases.
2016-08-15 11:15:35 -07:00
Mike Ellery
0d803e0fa2 Refactor uses of strCopy (RIPD-1256)
Replace the sparsely used strCopy function with Slice. Change some of
the SHAMap interface to use Slice instead of Blob, which should
eliminate a copy.
2016-08-15 11:09:45 -07:00
Edward Hennis
c1b8efb7af Clear queue for account with high fee tx (RIPD-1246):
* If an account has any transactions in the transaction queue, submitting
  a transaction that covers the differences to the open ledger fee level
  for prior queued transactions plus itself will cause all those
  transactions to be applied to the open ledger.
* tel failures in `TxQ::accept` will leave tx in the queue to retry later.
2016-08-15 11:09:18 -07:00
seelabs
b0704b47e8 Remove _FORTIFY_SOURCES from build:
This option is silently ignorned at -O0
2016-08-15 11:08:38 -07:00
seelabs
2fa84e95b9 Add test for path with offer that changes issuer only 2016-08-15 11:08:21 -07:00
seelabs
b02ec47b4f Fix signed comparison bug in range_check_cast 2016-08-15 11:07:58 -07:00
seelabs
d51a2785ee Set version to 0.33.0-b4 2016-08-08 12:25:57 -04:00
Nik Bougalis
e8a7ad4748 Prevent concurrent write operations in websockets 2016-08-07 13:15:19 -07:00
seelabs
2ca18670d2 Set version to 0.33.0-b3 2016-08-05 11:13:59 -04:00
seelabs
d4a56f223a Payment Channels (RIPD-1224):
Payment channels permit off-ledger checkpoints of XRP payments flowing
in a single direction. A channel sequesters the owner's XRP in its own
ledger entry. The owner can authorize the recipient to claim up to a
give balance by giving the receiver a signed message (off-ledger). The
recipient can use this signed message to claim any unpaid balance while
the channel remains open. The owner can top off the line as needed. If
the channel has not paid out all its funds, the owner must wait out a
delay to close the channel to give the recipient a chance to supply any
claims. The recipient can close the channel at any time. Any transaction
that touches the channel after the expiration time will close the
channel. The total amount paid increases monotonically as newer claims
are issued. When the channel is closed any remaining balance is returned
to the owner. Channels are intended to permit intermittent off-ledger
settlement of ILP trust lines as balances get substantial. For
bidirectional channels, a payment channel can be used in each direction.
2016-08-05 11:13:57 -04:00
seelabs
2e7f5502bf Fix RPC parsing bug 2016-08-05 11:13:57 -04:00
seelabs
4483079181 Remove extra path separator from CMAKE_SOURCE_DIR 2016-08-05 11:13:57 -04:00
Nik Bougalis
2f0b3bd427 Set version to 0.33.0-b2 2016-08-02 15:13:11 -07:00
Edward Hennis
d1ce07ef5d Minor refactor of LoadFeeTrack (RIPD-956):
* Load scaling functions are free, and take `Fees`.
* Move LoadFeeTrack to app/misc.
* Update naming convention.
2016-08-02 18:05:08 -04:00
Edward Hennis
a252fefede Report escalated ledger fee in load_factor (RIPD-1207):
* Updates both server_info and server_state
* Adds "load_factor_server", which reports the server-only portion of the
  load (if appropriate) so clients can decide an appropriate fee to pay if
  the open ledger fee is higher than they're willing to pay.

=== Release Notes ===
==== Updated Features ====

Both `server_info` and `server_state` report the escalated ledger fee in
the `load_factor` result parameter. If appropriate, `load_factor_server`
reports the server-only portion of the load so clients can submit a fee
between those two values to get into the queue.
2016-08-02 18:04:47 -04:00
Edward Hennis
e762d09e7e Tx queue enhancements and RPC info (RIPD-1205, RIPD-1206):
* Account-related queue stats (RIPD-1205). Boolean "queue" parameter to
  account_info only if requesting the open ledger.
* Account for the TxQ when autofilling sequence in sign-and-submit (RIPD-1206)
* Tweak TxQ::accept edge case when choosing which tx to try next.
* Labels for experimental "x_" submit parameters use correct separator.

=== Release Notes ===
==== New features ====

When requesting `account_info` for the open ledger, include the `queue :
true` to get extra information about any queued transactions for this
account. (RIPD-1205).

==== Bug fixes ====

When using sign-and-submit mode to autofill a transaction's sequence
number, the logic will not reuse a sequence number that is in the queue
for this account. (RIPD-1206).

Labels for experimental "x_queue_okay" and "x_assume_tx" parameters to
`sign` and `submit` updated to use correct separator.
2016-08-02 18:03:53 -04:00
Will
348e65074e fix bug in error propagation for account badSeed (RIPD-1248) 2016-08-02 13:25:48 -07:00
Will
64f2576fc8 Add jtx cpp test for account_objects RPC (RIPD-1230)
port of js test, account_objects-test.js
- bob account setup and rpc invoke
- error tests; no account, non-existant account, bad seed, validation
- combined unstepped testcase then stepped with limit/marker
2016-08-02 13:25:48 -07:00
Mike Ellery
9926d3188a Add jtx test for account_offers RPC (RIPD-1236)
Details
 -------

  * covers existing account_offers-test.js
  * adds new coverage for results limiting and some
    negative tests (bad input)
  * fix bug in json value copying logic for bad seed/account error
    case
  * using new BEAST_EXPECT macros
2016-08-02 13:25:48 -07:00
seelabs
cc8671b8b2 Add OwnerPays to supportedAmendments 2016-08-02 13:25:48 -07:00
wilsonianb
f5fcdd0b80 Update pywin32 version in appveyor 2016-08-02 13:25:48 -07:00
Miguel Portilla
71a30a57cb Fix scons vcxproj in OS X 2016-08-02 13:25:48 -07:00
Miguel Portilla
f9fe2ef90f Fix inbound ledger add peers logic 2016-08-02 13:25:48 -07:00
Scott Schurr
6c8673c7c3 Remove unused member variable in ApplyBaseView 2016-08-02 13:25:48 -07:00
JoelKatz
11b64e049c Report frozen lines in gateway_balances(RIPD-1217):
* Report lines frozen by the gateway separately
* Add unit test for gateway_balances
* Clean up some existing code
2016-08-02 13:25:48 -07:00
JoelKatz
33f153fc9a Consensus refactor preliminary changes (RIPD-1011):
* Standardize names of LedgerConsensusImp members
* Rework visitStoredProposals
* Clean up mapComplete
* Move status helpers out of LedgerConsensusImp
* Move applyTransaction out of LedgerConsensusUmp
* Clean up applyTransactions
2016-08-02 13:25:48 -07:00
JoelKatz
4758050444 SHAMap fixups:
* Change state_ to Invalid if inner node types mismatch
* flushDirty before unsharing to ensure modified nodes get written
* Remove unnecessary code
* Fix updateHash for V2 inner nodes
* In descend, call isInconsistentNode only if node is found
* getMissingNodes could request duplicates in some cases
* An invalid node with the right hash is useful, it proves the map invalid
2016-08-02 13:25:48 -07:00
Nik Bougalis
a5589dcec6 Set version to 0.33.0-b1 2016-07-29 17:58:26 -07:00
Nik Bougalis
08ea245101 Hoist version string to namespace level 2016-07-29 17:58:24 -07:00
seelabs
3b58e36621 Add CMake support:
cmake support in rippled. Currently supports:

 * unity/nounity debug/release
 * running protobuf
 * sanitizer builds
 * optional release build with assert turned on
 * `target` variable to easily set compiler/debug/unity
    (i.e. -Dtarget=gcc.debug.nounity)
 * gcc/clang/visual studio/xcode
 * linux/mac/win
 * gcc 4 ABI, when needed
 * ninja builds
 * check openssl for acceptably recent release
 * static builds

TBD:
 * jemalloc support
 * count

Notes:
 * Use the -G"Visual Studio 14 2015 Win64" generator on Windows. Without
   this a 32-bit project will be created. There is no way to set the
   generator or force a 64-bit build in CMakeLists.txt (setting
   CMAKE_GENERATOR_PLATFORM won't work). The best solution may be to
   wrap cmake with a script.

 * It is not possible to generate a visual studio project on linux or
   mac. The visual studio generator is only available on windows.

 * The visual studio project can be _either_ unity or
   non-unity (selected at generation time).  It does not appear possible
   to disable compilation based on configuration.

 * Language is _much_ worse than python, poor documentation and "quirky"
   language support (for example, generator expressions can only be used
   in limited contexts and seem to work differently based on
   context (set_property can set multiple values, add_compile_options
   can not/or is buggy)

 * Could not call out to `sed` because cmake messed with the regular
   expression before calling the external command. I did not see a way
   around this.

 * Makefile generators want to be single target. It wants a separate
   directory for each target type. I saw some mentions on the web for
   ways around this bug haven't look into it. The visual studio project
   does support debug/release configurations in the same project (but
   not unity/non-unity).
2016-07-29 17:57:50 -07:00
Miguel Portilla
b343b0468a Use lock_guard over unique_lock 2016-07-29 17:57:49 -07:00
Will
69b91065c5 Remove OpenSSL Base64 encoding dependency (RIPD-1238) 2016-07-29 17:57:49 -07:00
Vinnie Falco
e39316882e Add BEAST_EXPECT, replace calls to expect 2016-07-29 17:46:56 -07:00
Nik Bougalis
1ff972fbd3 Set version to 0.32.1 0.32.1 2016-07-29 12:52:26 -07:00
Nik Bougalis
cb7d0b508d Set version to 0.32.1-rc1 2016-07-14 17:31:32 -07:00
Nik Bougalis
cf72d70eca Clarify owner reserve requirements for trust lines (DOC-456) 2016-07-12 13:35:27 -07:00
seelabs
cf9d65f973 Set version to 0.32.1-b4 2016-07-07 14:45:17 -04:00
seelabs
dd2feb8d1f Use boost::thread_specific_ptr instead of thread_local:
`thread_local` causes deployment problems with CentOS 7
2016-07-07 14:45:15 -04:00